以int 和 Integer为例
先聊聊Java数据类型
Java为何有两种类型
数据类型在逻辑上讲只有引用类型就可以了,为何还要基本类型呢?
- 基本数据类型的包装类是类 ,而类会封装一些属性和方法,比如Integer.parseInt(String)就是将String型的变量转换成Integer类型;
- Java大多数的类和方法的操作参数都是类 类型的对象,比如ArrayList类中要存储的只能是类类型的数据,比如int类型想要存储在其中就只能转换成Integer才可以;
- 基本数据类型对于以数值计算为主的应用程序是必不可少的,
- 引用类型存放在堆里,基本类型存放在栈里: 栈空间小且连续,往往会被放在缓存。引用类型cache miss(缓存未命中)率高且要多一次解引用。对象还要再多储存一个对象头,对基本数据类型来说空间浪费率太高 ;
包装类的装箱/拆箱
在Java SE5之前的装箱和拆箱还是手动的,但是从Java5开始,两种数据类型可以通过引用类型也就是包装类内部的方法在底层自动装箱和拆箱了。
Integer a=new Integer(10);//原始将int10装箱成Integer包装类型
Integer b=