Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / String#intern() / 7 сообщений из 7, страница 1 из 1
04.07.2012, 16:26:53
    #37866333
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
Добрый день, у меня вопрос теоретического характера по поводу пула строк в Java.

Наткнулся на пост http://habrahabr.ru/post/79913/
Там утверждается что в исходниках Xerces есть такое объявление:

com.sun.org.apache.xerces.internal.impl.XMLScanner:395
Код: java
1.
protected final static String fVersionSymbol = "version".intern();



Но я не понимаю... без вызова метода intern, JVM-ка все равно бы прежде чем создавать экземпляр "version" проверила, имеетлся ли оный уже в пуле. Если имеется - то вернет ссылку на уже существующий экземпляр "version". Если в пуле не обнаружен "version" - то новый экземпляр добавит в пул. Или я не прав? Может JVM не все строковые константы добавляет в пул? И в данном случае вызов метода intern() является гарантом того что "version" попадет в пул?

Как я понял, с помощью метода intern() можно сравнивать строки через оператор '==' :
авторIt follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

Что вы думаете по этому поводу?
...
Рейтинг: 0 / 0
04.07.2012, 16:34:43
    #37866351
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
я думаю, что во-первых вы как-то слишком сложно описали процес помещения констант в пул.
во-вторых там же в коментариях есть ответ на вопрос почему так сделано в Xerces. Исключительно для борьбы с инлайнингом констант. С тем же успехом можно было .toString() использовать. Т.е. к теме самого intern() это отношения не имеет.
...
Рейтинг: 0 / 0
04.07.2012, 16:49:37
    #37866381
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
Blazkowicz,

Все, понял. Спасибо за ответ.
...
Рейтинг: 0 / 0
04.07.2012, 17:26:37
    #37866452
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
rabiterВсе, понял. Спасибо за ответ.
И ещё совет, не читайте про программирование на хабре. Там многие статьи не выдерживают никакой критики.
...
Рейтинг: 0 / 0
04.07.2012, 18:30:56
    #37866576
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
BlazkowiczrabiterВсе, понял. Спасибо за ответ.
И ещё совет, не читайте про программирование на хабре. Там многие статьи не выдерживают никакой критики.

Да, спасибо. Вообще я начал гуглить когда меня джуниор спросил, как GC чистит пул строк, и чистит ли вообще. Попал на эту статью на хабре, увидел intern() и заинтересовался.
...
Рейтинг: 0 / 0
04.07.2012, 18:36:11
    #37866582
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
Хороший джуниор)
...
Рейтинг: 0 / 0
04.07.2012, 18:54:29
    #37866602
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
String#intern()
забыл никХороший джуниор)

Да, правда хороший. Часто с теоретическими вопросами подходит.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / String#intern() / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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