Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java]Стринги


Автор: kornata 6.5.2010, 16:51
Помогите с решением. По-английски плохо понимаю.

Read the http://www.javaspecialists.eu/archive/Issue114.html article. What types of string literals are inlined by the compiler? Which precautions shall we take because of this?

Автор: LSD 7.5.2010, 17:27
Цитата(kornata @  6.5.2010,  17:51 Найти цитируемый пост)
What types of string literals are inlined by the compiler?

Те которые заданы строковым литералом
Код
"Some string"

Или те которые представляют собой http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#5313, т.е. грубо говоря это литералы, константы - final поля, который инициализируются константным выражением, и константы и летералы к которым применены встроенные операторы (только операторы, не методы).
Поэтому
Код
"Literal" + "Plus"

Это Constant Expression, а
Код
"LiteralConcat".concat("")

нет.


Цитата(kornata @  6.5.2010,  17:51 Найти цитируемый пост)
Which precautions shall we take because of this? 

Если мы не хотим чтобы константы подставлялись во время компиляции, можно просто вызвать какой нибудь метод:
Код

String LITERAL_CONCAT = "LiteralConcat".intern();

дешево и сердито.

Автор: kornata 9.5.2010, 10:24
Большое спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)