Java自动拆装箱机制

来源:互联网 发布:查端口8080是否被占用 编辑:程序博客网 时间:2024/06/05 00:10

自动拆装箱

JDK 1.5 中增加了基本类型和包装类之间的自动拆装箱机制。

包装类拆箱

Integer 举例,它是 int 型的包装类,拆箱的本质是执行了 Integer.intValue() 方法,比如以下代码:

int i1 = 100;Integer i2 = 100;System.out.println(i1 == i2); // 输出true

比较 i1 和 i2 时,i2 执行了 intValue() 方法变成 int 型的值然后再去和 i1 进行比较,因此输出结果是 true

Integer in = new Integer(100);int i = in;

自动拆箱机制也使得可以直接将 Integer 对象直接赋值给基本数据类型 int ,因为 in 会自动拆箱为 int 型数 100 然后再赋值给 i 。

基本数据类型自动装箱

自动装箱的本质是执行了 Integer.valueOf(int) 方法,比如:

Integer in = 100; // #1public static void method(Integer i){}int i = 100;method(i); // #2 

#1 我们可以直接将 int 型的值直接赋值给包装类对象,这里就是用了自动装箱,执行了 in.valueOf(100) 的操作

#2 在调用方法的时候,可以用 int 型参数代替 Integer 类参数,也是因为自动装箱机制。

总结

八种基本数据类型都有自动拆装箱机制,包装类中含有xxxValue()方法和valueOf()方法。

基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean


在需要包装类时,基本数据类型就会自动装箱,当需要基本数据类型时,包装类对象就会自动拆箱。

原创粉丝点击