装箱
装箱是把基本数据类型转换为对应的包装类对象。例如,将`int`类型转换为`Integer`对象。装箱有手动和自动两种方式。
手动装箱示例:
java
int num = 10;
Integer integerObj = new Integer(num); // Java 9 及以后不推荐使用此构造函数
Integer integerObj2 = Integer.valueOf(num); // 推荐使用此方法
自动装箱示例:
java
int num = 10;
Integer integerObj = num; // 自动装箱
拆箱
拆箱是把包装类对象转换为对应的基本数据类型。同样,拆箱也有手动和自动两种方式。
手动拆箱示例:
java
Integer integerObj = new Integer(10);
int num = integerObj.intValue();
自动拆箱示例:
java
Integer integerObj = new Integer(10);
int num = integerObj; // 自动拆箱
完整示例代码
以下是一个完整的 Java 代码示例,展示了装箱和拆箱的操作:
java
public class BoxingUnboxingExample {
public static void main(String[] args) {
// 装箱操作
int primitiveInt = 20;
// 自动装箱
Integer boxedInt = primitiveInt;
System.out.println("自动装箱后的结果: " + boxedInt);
// 拆箱操作
Integer integerObject = new Integer(30);
// 自动拆箱
int unboxedInt = integerObject;
System.out.println("自动拆箱后的结果: " + unboxedInt);
}
}
在这个示例里,先是将`int`类型的变量`primitiveInt`自动装箱成`Integer`对象`boxedInt`,接着把`Integer`对象`integerObject`自动拆箱成`int`类型的变量`unboxedInt`。
注意事项
- **性能影响**:频繁的装箱和拆箱操作会对性能产生一定影响,因为每次装箱都会创建一个新的对象,而拆箱则需要进行类型检查。
- **空指针异常**:在进行拆箱操作时,如果包装类对象为`null`,会抛出`NullPointerException`异常。所以在进行拆箱操作前,要确保包装类对象不为`null`。