java拆装_Java自动拆装包
Java自動拆裝包的例子
這段代碼在Java 1.5以前是不合法的
Long v = 0;
v += 1;
需要寫成這樣:
Long v = 0;
v += new Long(1);
在Java 1.5 以后,編譯器幫我們做了上面的工作。這就是Java的自動拆裝包,方便了很多,但是也帶來了可能會讓人忽略的問題。
Java自動拆裝包例子的性能
我們看一個求和的例子:
public static void main(String[] args) {
long time = System.currentTimeMillis();
long sum = 0L;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println("total : " + sum);
System.out.println("process time : " + (System.currentTimeMillis() - time) + "ms");
}
/*
輸出:
total : 2305843005992468481
process time : 820ms
*/
現在我們把long sum = 0L修改成Long再看看輸出:
public static void main(String[] args) {
long time = System.currentTimeMillis();
Long sum = 0L;
for (int i = 0; i < Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println("total : " + sum);
System.out.println("process time : " + (System.currentTimeMillis() - time) + "ms");
}
/*
輸出:
total : 2305843005992468481
process time : 9650ms
*/
通過上面的對比,我們看到幾乎同樣的代碼,long的效率竟然是Long的10倍有多(視機子的配置而定),在上面的例子中我們看到Java的自動拆裝包是編譯期幫我們做了這樣的操作:
sum += i;
// 轉化為:
sum += new Long(i);
可想而知,上面的第二段代碼效率慢的原因是自動拆裝包的鍋,new了0x7fffffff多個Long對象,所以效率會下降。
總結
以上是生活随笔為你收集整理的java拆装_Java自动拆装包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net 设置 excel ali
- 下一篇: 菲利普费雪的投资秘诀是什么?这三点在至关