自动拆箱与装箱
自动装箱: 就是将基本数据类型自动转换成对应的包装类。
自动拆箱:就是将包装类自动转换成对应的基本数据类型。
基本数据类型:
共有八种,基本类型可以分为三类:
1.字符类型 char
2.布尔类型 boolean
3.数值类型 byte、short、int、long、float、double。
包装类:
基本数据类型不是面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类,使得基本数据类型具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作
自动装箱与拆箱的原理:
自动装箱:
都是通过包装类的valueOf()方法来实现的.
自动拆箱:
都是通过包装类对象的xxxValue()来实现的(如booleanValue()、longValue()等)。
举个例子:
a == b反编译后,实际上是a == b.intValue()
可能出现的问题:
1.在包装类中,Integer类型比较特殊,其缓存值为-128~127,虽然 -128 到 127 之间的数字可以使用==,但是这个范围之外还是需要使用 equals 比较
2.如果包装类对象为 null ,那么自动拆箱时就有可能抛出 NullPointerException
总结:
1.自动装箱: 就是将基本数据类型自动转换成对应的包装类。
2.自动拆箱:就是将包装类自动转换成对应的基本数据类型。
3.包装类比较时虽然 -128 到 127 之间的数字可以使用==,但是这个范围之外还是需要使用 equals 比较
4.对于不确定的包装类型,一定要对NULL的情况做检验和判断,避免出现 NullPointerException
上一篇 >>>>> == 和 equals 的区别(面试常背)
That’s it;
总有人间一两风,填我十万八千梦。