装箱和拆箱:Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的。java装箱过程是调用包装类的valueOf方法实现的,而拆箱过程则是调用包装类的xxxValue方法实现的。
自动装箱和拆箱
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。
publicclassTest { publicstaticvoidmain(String[] args) { //自动装箱Integerdata=1; //自动拆箱intdata1=data; } }
注意
- 装箱操作会创建对象,频繁的装箱操作会消耗许多内存,影响性能,所以可以避免装箱的时候应该尽量避免。
- 如果包装器类是
null
,用 ==作比较的时候会报空指针错误,原因是它会首先进行自动拆箱转出基本数据类型,然后再执行比较。 - 当两种不同类型用== 比较时,包装器类的需要拆箱, 当同种类型用==比较时,会自动拆箱或者装箱。