Java中存在两种类型的数据,1、基本数据类型(primitive type),包含八种:byte,char,boolean,short,int,long,float,double 它们所对应的包装类型分别为:Byte , Character , Boolean , Short , Integer , Long , Floag , Double
2、引用类型 (reference type ) 例如: String , HashMap 等一系列。
Java1.5 及 Java1.5 以上的版本都提供了自动拆箱和自动装箱的功能,例如:
Integer i=10 ; //自动装箱
int i = new Integer(10); //自动拆箱
至于为何要优先使用基本类型(primitive type ) ,看如下代码:
方法1 . 使用包装类型 Long
long beginTimeMillis=System.currentTimeMillis();
Long sum=0l; //包装类型
for(long i=0l;i<100000000;i++){
sum+=i;
}
Long endTimeMillis=System.currentTimeMillis();
System.out.println(sum);
System.out.println(endTimeMillis-beginTimeMillis);
所需要的时间大致为1313ms ,不同的机器不一样,这里只是大概。
方法2. 使用基本类型 long
long beginTimeMillis=System.currentTimeMillis();
//基本类型
long sum=0l;
for(long i=0l;i<100000000;i++){
sum+=i;
}
long endTimeMillis=System.currentTimeMillis();
System.out.println(sum);
System.out.println(endTimeMillis-beginTimeMillis);
所需要的时间仅仅只要 328ms,比使用装箱类型Long快了4倍以上,如果数据量越多、那么使用基本类型的效率就越明显。
至于为什么会出现这种情况,这是因为Java1.5及Java1.5以上的版本提供了自动拆箱、装箱的功能。方法1因为反复的自动拆箱、装箱、消耗了性能。
在基本类型和装箱类型之间如何选择,只需牢记:尽量避免反复的自动拆箱、装箱。