2012-12-13 12 views
6

Zasadne wydaje mi się, że kompilator zajmie mniej więcej tak:optymalizacji kompilatora Java String

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"); 

i skompilować dwa ciągi w jeden. Jestem prawie pewien, że to prawda, ale chciałbym, aby moje kaczki były z rzędu, jeśli ktoś je przywozi.

Odpowiedz

3

Aby sprawdzić, czy to, co mówi o JLS stałych wyrażeń jest prawdziwe I przestrzegać tego kodu, Test.java

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

następnie dekompilować Test.class ze JAD i dostał ten

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

że jest w Test.class jest tylko jeden literał "123456"

7

ciągów obliczone wyrażeń stałych (§15.28) są obliczane na czasie kompilacji i traktowany tak, jakby były literałami.

Pokaż ten cytat z JLS każdemu, kto "rzuca ci wyzwanie".

Powiązane problemy