08/06/10 12:25:08
>>158
System.out.println("あ"+"い");
は、"あ" と "い" は定数でコンパイル時に値が確定するから、
コンパイル結果は "あい" と最適化されるんじゃないの?
コンパイル時に値が確定されない文字変数は、+ でくっつけるようなソース書いても、
コンパイル時に .append() に変換されるんじゃないの?
例:↓みたいなソース
public static void main(String[] args) {
String foo = args[0];
String bar = args[1];
System.out.println(foo + bar);
}
というか ecj は知らんが jad でやったら、 System.out.println() の行は、
System.out.println((new StringBuilder()).append(s).append(s1).toString()); になった。
public static void main(String[] args) {
String foo = "あ";
String bar = "い";
System.out.println(foo + bar);
}
も、↑と同様。
public static void main(String[] args) {
System.out.println("あ" + "い");
}
は、System.out.println("あい"); になった。