A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请仔细看下面两段代码(只有一个字母的差异)
long t = System.currentTimeMillis();
Long sum = 0L;
for (long i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;   //自动装箱
}
System.out.println("耗时: " + (System.currentTimeMillis() - t) + " ms") ;
结果如下:

耗时: 6756 ms

long t = System.currentTimeMillis();
//Long sum = 0L;
long sum = 0L;
for (long i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println("耗时: " + (System.currentTimeMillis() - t) + " ms") ;
结果如下:

耗时: 1248 ms

我们大致可以看出,下面的代码比上面的执行效率提高了5倍,我们可以将这种差异解释为对自动装箱功能的滥用。
我们可以说第一段代码已经被修改为下面的代码。所以我们可以利用转化后的代码(创建了不必要的“Long”实例)来解释处理速度变慢的原因。

long t = System.currentTimeMillis();
Long sum = 0L;
for (long i = 0; i < Integer.MAX_VALUE; i++) {
sum += new Long(i);  }
System.out.println("耗时: " + (System.currentTimeMillis() - t) + " ms") ;

4 个回复

倒序浏览
回复 使用道具 举报
6666666666666
回复 使用道具 举报
回复 使用道具 举报
看不明白,没学到。太讨厌不遵守交规的死机了,堵路。我坚决支持,乱走道,罚分,一个3分。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马