プリミティブ型を文字列に変換する時に""と'+'する人達

String str = "" + i;
中国のソースを見るようになってよく見かける。int値だったりを文字列に変換するのが邪魔臭い(?)のか、これって理論的にはいいとは思うけど、内部でStringBuilder生成してるから処理重くなってると思うんだけどな。で、さくっと確認してみよう。


public void test1(int i) {
String str = "" + i;
}

public void test2(int i) {
String str = Integer.toString(i);
}

javap!!

public void test1(int);
Code:
0: new #2; //class java/lang/StringBuilder
3: dup
4: invokespecial #3; //Method java/lang/StringBuilder."":()V
7: ldc #4; //String
9: invokevirtual #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
12: iload_1
13: invokevirtual #6; //Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
16: invokevirtual #7; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
19: astore_2
20: return

public void test2(int);
Code:
0: iload_1
1: invokestatic #8; //Method java/lang/Integer.toString:(I)Ljava/lang/String;
4: astore_2
5: return

明らかじゃないですかね(@_@;)