String s = "" + 123; // bad
String t = Integer.toString(456);
将编译为:
String s = "123";
String t = Integer.toString(456);
所以:“”123显然略胜一筹!用JAD检查
public static void main(String args[])
{
// 0 0:ldc1 #16
// 1 2:astore_1
// 2 3:sipush 456
// 3 6:invokestatic #18
// 4 9:astore_2
// 5 10:getstatic #24
// 6 13:new #30
// 7 16:dup
// 8 17:aload_1
// 9 18:invokestatic #32
// 10 21:invokespecial #38
// 11 24:aload_2
// 12 25:invokevirtual #41
// 13 28:invokevirtual #45
// 14 31:invokevirtual #48
// 15 34:return
}
编辑:
对于非常数值:
int i = 123;
String s = (new StringBuilder()).append(i).toString();
String t = Integer.toString(i);
System.out.println((new StringBuilder(String.valueOf(s))).append(t).toString());
public static void main(String args[])
{
// 0 0:bipush 123
// 1 2:istore_1
// 2 3:new #16
// 3 6:dup
// 4 7:invokespecial #18
// 5 10:iload_1
// 6 11:invokevirtual #19
// 7 14:invokevirtual #23
// 8 17:astore_2
// 9 18:iload_1
// 10 19:invokestatic #27
// 11 22:astore_3
// 12 23:getstatic #32
// 13 26:new #16
// 14 29:dup
// 15 30:aload_2
// 16 31:invokestatic #38
// 17 34:invokespecial #44
// 18 37:aload_3
// 19 38:invokevirtual #47
// 20 41:invokevirtual #23
// 21 44:invokevirtual #50
// 22 47:return
}