簡體   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