Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Снова про String.intern() / 8 сообщений из 8, страница 1 из 1
17.02.2013, 17:14:20
    #38154689
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
Вот тут 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
17.02.2013, 17:32:12
    #38154704
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
вот любители заглянуть в анальную трещину. Ну какую практическую пользу принесут эти знания? Строка - это объект, объекты сравниваются по икуалс тчк.
...
Рейтинг: 0 / 0
17.02.2013, 17:47:02
    #38154714
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
нет, никакой точки нету. Если много операций сравнения, то использовать эквалс - это говнокод.
...
Рейтинг: 0 / 0
17.02.2013, 17:51:52
    #38154717
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
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
17.02.2013, 17:52:35
    #38154718
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
chabapokнет, никакой точки нету. Если много операций сравнения, то использовать эквалс - это говнокод.
Чей-та? А всё подряд говно тащить в пул строк это не говнокод?
...
Рейтинг: 0 / 0
17.02.2013, 18:18:43
    #38154745
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
не, ну это уже надо смотреть по обстоятельствам :)
если с каждой строкой сравнивается десяток - можно и потащить, как мне видится...
...
Рейтинг: 0 / 0
17.02.2013, 18:26:47
    #38154751
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
chabapokне, ну это уже надо смотреть по обстоятельствам :)
если с каждой строкой сравнивается десяток - можно и потащить, как мне видится...
Ещё раз хорошо подумай. Что именно надо сравнивать? Если это одни и те же строки? То возникает резонный вопрос, почему это строки, а не enum?
А если это каждый раз разные строки, то возникает другой вопрос. А зачем мы все эти каждый раз разные строки помещаем в пул?
Оно нам для чего?
...
Рейтинг: 0 / 0
18.02.2013, 20:01:50
    #38156369
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Снова про String.intern()
Ясно. На самом деле я именно что любитель заглянуть в анальную трещину. Мне нужно было с этим разобраться, т.к. статью я прочитал, развидеть ее не получалось, а спать спокойно я уже не мог. Не будет никто юзать intern(), не волнуйтесь. :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Снова про String.intern() / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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