這似乎是合理的,我認爲編譯器是要採取這樣的事情: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");
和兩個字符串編譯成一個。我很肯定這是真的,但我想 有任何人提出了我的鴨子連續。
這似乎是合理的,我認爲編譯器是要採取這樣的事情: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");
和兩個字符串編譯成一個。我很肯定這是真的,但我想 有任何人提出了我的鴨子連續。
要檢查什麼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」
是的,這將由Java語言規範的constant expression部分處理。特別地看到部分15.18.1. String Concatenation Operator +
字符串由常量表達式(§15.28)來計算在 編譯時被計算並然後進行處理,好像他們是文字。
將JLS的報價顯示給「挑戰」您的任何人。