基本数据类型拆装箱
自动拆箱与装箱
Jdk5以后提供了自动拆箱(unboxing)与装箱(autoboxing),但是对拆装箱的细节进行了部分隐藏,需要注意
基本数据类型对应的包装类Java是面向对象的语言,而基本数据类型只是字面量,不是对象。为了解决这个问题java引入了基本数据类型的包装类
Integer Double Long Short Character Boolean Float Byte
Integer i = 10; //自动装箱
Double a = i.DoubleValueOf();? //10.0
也可以使用更一般化的java.lang.Number类来自动装箱。例如:
Number a = 3.4f;
自动拆装箱的陷阱Integer i = null;
Int a = I;? //编译无错误? 运行时出空指针异常
?? System.out.println(b1 == b2);//false
?
==是用来比较两个基本数据类型的值是否相同,同时==也可以判断两个对象的引用是否相同(是否是同一对象)。对于-128~127(1个字节)的值会在你自动拆装箱过程中重用,因此这个范围内的Integer类型对象是相同的,而超出这个范围的则不会得到重用,因此对象实不相等的。
?
?