2012-12-13 28 views
6

E mi sembra ragionevole che il compilatore sta andando a prendere qualcosa di simile:Java Compiler String ottimizzazione

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

e compilare le due stringhe in una sola. Sono abbastanza sicuro che questo sia vero, ma mi piacerebbe che lo abbia le mie anatre di fila se qualcuno lo fa venire su.

risposta

3

Per controllare se quello che dice di JLS espressioni costanti è vero Obbedii questo codice, Test.java

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

poi decompilare Test.class con Jad e ottenuto questo

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

che è, in Test.class c'è solo un letterale "123456"

7

Corde calcolati da espressioni costanti (§15.28) vengono calcolate in fase di compilazione e quindi trattati come se fossero letterali.

Mostra questa citazione dallo JLS a chiunque "ti sfida".