繁体   English   中英

当我们在Java中将Integer分配给int时,为什么编译器不会出错

[英]Why Compiler doesn't give error when we assign Integer to int in Java

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

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

所有其他类型(byte-Byte,float-Float)都是这种情况。

是什么原因? 我错过了什么吗?

它被称为autoboxing / unboxing。

从Java 1.5开始,编译器会自动将基元“装箱”到相应的类中(例如intIntegerdoubleDouble等),并根据需要取消框。

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

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分配object to primitive variable ,将取出对象的值并将其分配给基元。 此过程称为自动autounboxing 反之亦然是Autoboxing

这称为“autoboxing / unboxing”。 int这样的基本类型会在需要时自动转换为类似Integer类,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM