为什么当我们将 Integer(object) 分配给 int(primitive) 时编译器不会出错?
int i;
Integer ii = new Integer(5);
i = ii;//no compilation error.
所有其他类型(字节字节,浮点浮点)都是这种情况。
是什么原因?我在这里错过了什么吗?
为什么当我们将 Integer(object) 分配给 int(primitive) 时编译器不会出错?
int i;
Integer ii = new Integer(5);
i = ii;//no compilation error.
所有其他类型(字节字节,浮点浮点)都是这种情况。
是什么原因?我在这里错过了什么吗?
这称为自动装箱/拆箱。
从 Java 1.5 开始,编译器自动将原语“装箱”到它们对应的类中(例如int
andInteger
和等),并根据需要取消装箱double
。Double
有关更多详细信息,请参阅文档中的此页面。
Java SE 5.0 引入了自动装箱作为一项新功能。您可以在 Java 文档中找到更多信息。http://docs.oracle.com/javase/1.5.0/docs/guide/language/autoboxing.html
Java 5 和更新版本能够执行自动装箱。编译器会将您的代码隐式转换为:
int i;
Integer ii = new Integer(5);
i = ii.intValue();
i = ii;//no compilation error.
因为这称为自动拆箱。当您分配object to primitive variable
时,对象中的值被取出并分配给原语。这个过程被称为autounboxing
。反之亦然Autoboxing
。
这称为“自动装箱/拆箱”。原始类型 likeint
会在需要时自动转换为类 like Integer
,反之亦然。