关于一个new新对象耗时问题

no9988 no9988 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

System.out.println(System.getProperty("java.version"));
System.out.println(System.currentTimeMillis());
System.out.println(new java.util.Date());
for(int i=0;i<1000000000;i++){
String str = new String("");
}
System.out.println(System.currentTimeMillis());
System.out.println(new java.util.Date());
System.out.println("----------------------");
System.out.println(System.currentTimeMillis());
System.out.println(new java.util.Date());
for(int i=0; i<1000000000;i++){
StringBuffer str = new StringBuffer("");
}
System.out.println(System.currentTimeMillis());
System.out.println(new java.util.Date());

System.out.println("----------------------");
System.out.println(System.currentTimeMillis());
System.out.println(new java.util.Date());
for(int i=0; i<1000000000;i++){
test1 t = new test1();
}
System.out.println(System.currentTimeMillis());
System.out.println(new java.util.Date());


我分别new 1亿个 String StringBuffer 和 test1 对象,结果如下:
(String)
1.5.0_11
1238639830062
Thu Apr 02 10:37:10 CST 2009
1238639834437
Thu Apr 02 10:37:14 CST 2009
----------------------
(StringBuffer)
1238639834437
Thu Apr 02 10:37:14 CST 2009
1238639874375
Thu Apr 02 10:37:54 CST 2009
----------------------
(test1)
1238639874375
Thu Apr 02 10:37:54 CST 2009
1238639875187
Thu Apr 02 10:37:55 CST 2009

我加到了10亿个,这个我是分开单个测试的,发现new StringBuffer 的耗时就远远大于其他那两个了,
new 10亿个的结果分别如下:

1.5.0_11
1238639226906
Thu Apr 02 10:27:06 CST 2009
1238639258796
Thu Apr 02 10:27:38 CST 2009
String 花了 差不多32秒
-------------------------

1.5.0_11
1238639380140
Thu Apr 02 10:29:40 CST 2009
1238639511687
Thu Apr 02 10:31:51 CST 2009
StringBuffer 花了 差不多2分钟19秒
----------------------

1.5.0_11
----------------------
1238639579843
Thu Apr 02 10:32:59 CST 2009
1238639588406
Thu Apr 02 10:33:08 CST 2009
test1对象花了 9秒

这是为什么呀,为什么StringBuffer比其他两个要多花那么多时间?
他在虚拟机中创建对象的时候和其他两个有什么区别吗 ?

...全文

相关推荐

评论 7
收藏 已收藏
分享
返回顶部
no9988
Java SE 62,620 成员 307,251 内容