[英]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開始,編譯器會自動將基元“裝箱”到相應的類中(例如int
和Integer
, 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
分配object to primitive variable
,將取出對象的值並將其分配給基元。 此過程稱為自動autounboxing
。 反之亦然是Autoboxing
。
這稱為“autoboxing / unboxing”。 像int
這樣的基本類型會在需要時自動轉換為類似Integer
類,反之亦然。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.