|
|
|
String#intern()
|
|||
|---|---|---|---|
|
#18+
Добрый день, у меня вопрос теоретического характера по поводу пула строк в Java. Наткнулся на пост http://habrahabr.ru/post/79913/ Там утверждается что в исходниках Xerces есть такое объявление: com.sun.org.apache.xerces.internal.impl.XMLScanner:395 Код: java 1. Но я не понимаю... без вызова метода 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. Что вы думаете по этому поводу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 16:26:53 |
|
||
|
String#intern()
|
|||
|---|---|---|---|
|
#18+
я думаю, что во-первых вы как-то слишком сложно описали процес помещения констант в пул. во-вторых там же в коментариях есть ответ на вопрос почему так сделано в Xerces. Исключительно для борьбы с инлайнингом констант. С тем же успехом можно было .toString() использовать. Т.е. к теме самого intern() это отношения не имеет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 16:34:43 |
|
||
|
String#intern()
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Все, понял. Спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 16:49:37 |
|
||
|
String#intern()
|
|||
|---|---|---|---|
|
#18+
rabiterВсе, понял. Спасибо за ответ. И ещё совет, не читайте про программирование на хабре. Там многие статьи не выдерживают никакой критики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 17:26:37 |
|
||
|
String#intern()
|
|||
|---|---|---|---|
|
#18+
BlazkowiczrabiterВсе, понял. Спасибо за ответ. И ещё совет, не читайте про программирование на хабре. Там многие статьи не выдерживают никакой критики. Да, спасибо. Вообще я начал гуглить когда меня джуниор спросил, как GC чистит пул строк, и чистит ли вообще. Попал на эту статью на хабре, увидел intern() и заинтересовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 18:30:56 |
|
||
|
String#intern()
|
|||
|---|---|---|---|
|
#18+
Хороший джуниор) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2012, 18:36:11 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2131420]: |
0ms |
get settings: |
16ms |
get forum list: |
23ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
46ms |
get topic data: |
18ms |
get forum data: |
4ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 348ms |
| total: | 524ms |

| 0 / 0 |
