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

posted on 2018-06-11 22:13  adamal  阅读(111)  评论(0)    收藏  举报