public static void main(String args[])
{
int MAX_ITERATION = 50000000;
long starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i)
{
String s = Integer.toString(i);
}
long endtime = System.currentTimeMillis();
System.out.println("1: " + (endtime - starttime));
starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i)
{
String s1 = new Integer(i).toString();
}
endtime = System.currentTimeMillis();
System.out.println("2: " + (endtime - starttime));
starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i)
{
String s2 = ""+i;
}
endtime = System.currentTimeMillis();
System.out.println("3: " + (endtime - starttime));
starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i)
{
String s3 = String.valueOf(i);
}
endtime = System.currentTimeMillis();
System.out.println("4: " + (endtime - starttime));
}
以上为测试代码,我在本机(ThinkPad E430)上一次运行时间为:
1: 2603(Integer.toString(i))
2: 2880(new Integer(i).toString())
3: 8459(""+i)
4: 2666(String.valueOf(i))
但若将(""+i)改为""+10后,时间大大减少,测试结果为:18,原因自己分析应该为""+10在常数池生成了一个10的常数,每次只用这个常数就可以了,不用再重新生成,因此时间大大减少。