2012-12-13 88 views
6

這似乎是合理的,我認爲編譯器是要採取這樣的事情:Java編譯器優化的字符串

log.info("A really long logger message that is kind of a pain in the tucous " + 
    "and violates formatting standards by making the line to long"); 

和兩個字符串編譯成一個。我很肯定這是真的,但我想 有任何人提出了我的鴨子連續。

回答

3

要檢查什麼JLS說,關於常量表達式是真的,我遵守這個代碼,Test.java

public static void main(String[] args) { 
    log.warning("123" + "456"); 
} 

然後反編譯的Test.class用JAD和得到這個

public static void main(String args[]) 
{ 
    log.warning("123456"); 
} 

也就是說,在Test.class中只有一個文字「123456」

7

字符串由常量表達式(§15.28)來計算在 編譯時被計算並然後進行處理,好像他們是文字。

JLS的報價顯示給「挑戰」您的任何人。