小提示——避免不必要的自动装箱、拆箱
2010-03-04 09:36
211 查看
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倍左右。
分别对应下面几个类包装器: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倍左右。
相关文章推荐
- android 避免 AutoBoxing(自动装箱)Unboxing(自动拆箱)功能
- JAVA中的自动装箱/拆箱
- 基本数据类型对象包装类和自动装箱自动拆箱技术
- Java自动装箱和拆箱
- 【自动装箱、自动拆箱】享元设计模式:对于小的整数,装箱装成的对象都是同一个
- JAVA JDK1.5新特性<静态带入、可变参数、增强For循环、自动装箱及自动拆箱>
- 自动装箱和拆箱的使用(autoboxing/unboxing)
- 基本数据类型对象包装类、自动装箱和自动拆箱
- JAVA 自动装箱拆箱
- 静态导入-可变参数-增强for循环-基本数据类型的自动拆箱与装箱
- J2SE 5.0新特性(四)自动装箱/拆箱
- 深入理解Java自动装箱拆箱机制(Autoboxing and unboxing)
- Java自动装箱和自动拆箱操作
- 可变参数与自动拆箱和自动装箱
- 包装类的自动装箱和拆箱
- 自动装箱与自动拆箱
- 自动装箱与自动拆箱
- 自动装箱与自动拆箱
- java语法糖之自动装箱和自动拆箱
- 自动装箱与拆箱功能