您的位置:首页 > 其它

到底那个效率高-初始化、垃圾收集或虚拟机的问题 ?

2005-07-28 16:40 281 查看
我用J2SDK1.4 运行下面程序片断:
//方式1:只定义一个String对象引用;以后重用这个对象引用存储信息
long before = System.currentTimeMillis();
String s;
for(int i=0;i<10000000;i++){
s = "a";
}
long after = System.currentTimeMillis();
//运行后检验这种方法用时长,耗时是下一种方式的几倍甚至10倍
System.out.println(after - before);

//方式2:每次都重新初始化一个String 对象引用
before = System.currentTimeMillis();
for(int i=0;i<10000000;i++){
String b = "a";
}
after = System.currentTimeMillis();
System.out.println(after - before);

感觉方式1耗时应该比方式2短,但运行结果与想象不符。
按照这篇文章对String 对象初始化的说明,本例中的String对象全部使用String池中缓存的对象“a”,这样方式1与方式2在初始化时没有区别; 但方式2维护了更多的局部变量(即对象引用),反而速度更快,是何原因?请高手指点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: