powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Снова про String.intern()
8 сообщений из 8, страница 1 из 1
Снова про String.intern()
    #38154689
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут http://habrahabr.ru/post/79913/ автор пишет

(1)
авторДругими словами "version" == "version".intern() всегда истинно.

Это намекает нам о то том, что компилятор _обязательно_, встретиив левую "version" засунет ее в пул строк и даст ссылку на нее.


Там же автор пишет:

авторТак почему же я так удивился, увидев
protected final static String fVersionSymbol = "version".intern();

Мне кажется, автор удивился неспроста. Что мы тут видим? Строку, которую как мы выснили в (1) jvm и так сунет в пул, зачем-то все же интернируют. Чтобы наверняка! Наверное, все же, jvm не обазана совать строки в пул по умолачнию, другое дело что хотспот это делает. А раз так, "version" == "version".intern() все же не всегда будет истинно?
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38154704
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот любители заглянуть в анальную трещину. Ну какую практическую пользу принесут эти знания? Строка - это объект, объекты сравниваются по икуалс тчк.
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38154714
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, никакой точки нету. Если много операций сравнения, то использовать эквалс - это говнокод.
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38154717
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokВот тут http://habrahabr.ru/post/79913/ автор пишет
Сколько уже можно говорить, не читайте на хабре про программирование, если это не переводы.


chabapokавторДругими словами "version" == "version".intern() всегда истинно.
Это намекает нам о то том, что компилятор _обязательно_, встретиив левую "version" засунет ее в пул строк и даст ссылку на нее.

Левые и правые не при чем. Компилятор помещает в пул все строковые константы, которые находит в коде.

chabapokТам же автор пишет:
авторТак почему же я так удивился, увидев
protected final static String fVersionSymbol = "version".intern();

Мне кажется, автор удивился неспроста. Что мы тут видим? Строку, которую как мы выснили в (1) jvm и так сунет в пул, зачем-то все же интернируют. Чтобы наверняка! Наверное, все же, jvm не обазана совать строки в пул по умолачнию, другое дело что хотспот это делает. А раз так, "version" == "version".intern() все же не всегда будет истинно?

Facepalm. Это приём борьбы с инлайном констант. К интернированию строк особого отношения не имеет. Если убрать intern(), то компилятор в других классах вместо ссылки на поле будет использовать ссылку на константу в пуле. А когда значение поля поменяется в процессе разработки, нужно будет перекомпилировать все остальные классы. С помощью intern() инлайн предотвращаются и все классы ссылаются на поле, а не на константу.
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38154718
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokнет, никакой точки нету. Если много операций сравнения, то использовать эквалс - это говнокод.
Чей-та? А всё подряд говно тащить в пул строк это не говнокод?
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38154745
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, ну это уже надо смотреть по обстоятельствам :)
если с каждой строкой сравнивается десяток - можно и потащить, как мне видится...
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38154751
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokне, ну это уже надо смотреть по обстоятельствам :)
если с каждой строкой сравнивается десяток - можно и потащить, как мне видится...
Ещё раз хорошо подумай. Что именно надо сравнивать? Если это одни и те же строки? То возникает резонный вопрос, почему это строки, а не enum?
А если это каждый раз разные строки, то возникает другой вопрос. А зачем мы все эти каждый раз разные строки помещаем в пул?
Оно нам для чего?
...
Рейтинг: 0 / 0
Снова про String.intern()
    #38156369
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно. На самом деле я именно что любитель заглянуть в анальную трещину. Мне нужно было с этим разобраться, т.к. статью я прочитал, развидеть ее не получалось, а спать спокойно я уже не мог. Не будет никто юзать intern(), не волнуйтесь. :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Снова про String.intern()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]