JAVA:自动装箱和自动拆箱
自动装箱:基本数据类型,直接变成对象
自动拆箱:将对象中的数据变成基本数据类型
1. 自动装箱
Integer in = 1;
将基本数据类型1,自动转成引用类型的对象Integer in
其本质是: Integer in = new Integer(1);
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(1); 虽然1不是Integer类型,但是自动装箱
2. 自动拆箱
Integer in = 1;
in = in +1;
首先将引用类型拆箱成基本类型,然后进行运算,再将运算结果装箱。
3. 装箱和拆箱的弊端
因为引用类型都可以赋值为null
Integer in = null;
in = null.intValue()+1;
就会出现空指针异常,NullPointerException
所以在拆箱前,进行空值判断
if(in != null){
in = in + 1;
}
3. 自动装箱和拆箱的练习
Integer i = new Integer(1);
Integer j = new Integer(1);
i==j false,两个对象的比较,比较的是内存地址
i.equals(j); true,比较的是值,equals继承Object类的方法,并重写之
-------------------------------------
integer a =500;
integer b = 500;
a==b //false,装箱了,变成两个对象,比较内存地址
a.equals(b);//true
--------------------------------
integer aa = 50;
integer bb = 50;
aa==bb; //true,integer在byte范围内-128~127的范围内时,JVM不会重新new 对象即
Integer aa = new Integer(127);
Integer bb = aa;
aa.equals(bb); //true
浙公网安备 33010602011771号