3

为什么当我们将 Integer(object) 分配给 int(primitive) 时编译器不会出错?

int i;
Integer ii = new Integer(5);
i = ii;//no compilation error.

所有其他类型(字节字节,浮点浮点)都是这种情况。

是什么原因?我在这里错过了什么吗?

4

5 回答 5

13

这称为自动装箱/拆箱。

从 Java 1.5 开始,编译器自动将原语“装箱”到它们对应的类中(例如intandInteger和等),并根据需要取消装箱doubleDouble

有关更多详细信息,请参阅文档中的此页面

于 2012-08-10T07:30:05.603 回答
3

Java SE 5.0 引入了自动装箱作为一项新功能。您可以在 Java 文档中找到更多信息。http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html

于 2012-08-10T07:31:49.020 回答
3

Java 5 和更新版本能够执行自动装箱。编译器会将您的代码隐式转换为:

int i;
Integer ii = new Integer(5);
i = ii.intValue();
于 2012-08-10T07:32:48.863 回答
2

i = ii;//no compilation error.

因为这称为自动拆箱。当您分配object to primitive variable时,对象中的值被取出并分配给原语。这个过程被称为autounboxing。反之亦然Autoboxing

于 2012-08-10T07:30:50.507 回答
2

这称为“自动装箱/拆箱”。原始类型 likeint会在需要时自动转换为类 like Integer,反之亦然。

于 2012-08-10T07:31:14.727 回答