小提示——避免不必要的自动装箱、拆箱

来源:互联网 发布:java开源周报管理系统 编辑:程序博客网 时间:2024/06/05 00:15

Java 中有下面几种基本数据类型:double,float,long,int,short,char,boolean。

分别对应下面几个类包装器:Double,Float,Long,Integer,Short,Character,Boolean。

我们知道基本类型与对应的类之间可以无缝自动转换,这种转换就涉及到了JVM自动装箱和拆箱了,下面列出2个很简单装箱和拆箱的列子:

// 装箱
int i = 0;
// 把i这个基本类型的数赋给Integer类的变量,JVM就会自动装箱
Integer int = i;

// 拆箱
int j = int;

装箱和拆箱都是要花费CPU和内存资源的,所以如果没必要尽量避免使用JVM的自动装箱、拆箱。

下面用二段简单的代码测试一下自动装箱的性能影响:

代码一:
Integer result = 0;
for(int i =0;i < 50000000;i++){
result += i; // 自动装箱
}

代码二:
int result = 0;
for(int i =0;i < 50000000;i++){
result += i;
}

在本机测试第二段代码的效率比第一段代码快10倍左右。

原创粉丝点击