首頁  >  問答  >  主體

高琪Java影片裡,這個將int類型的值直接賦值給Integer物件的語句怎麼會透過編譯呢?

最近看高琪Java300篇教程,裡面有句代碼高老師一筆帶過了,但是細細看總覺得其中蘊含的知識點不理解,代碼如下:

public class Test063 {
    public static void main(String[] args){
    Integer i = Integer.parseInt("234");
    System.out.println(i);
    }
}

第二句Interger.parseInt("234")我看了原始碼,

#上面明明說parseInt方法回傳的是int型別的值,可它怎麼能直接賦值給一個Integer物件呢?

我又做了下實驗

Integer a = 1;//报错
Integer b = Integer.parseInt("1");//编译通过

結果讓我非常懵逼,為什麼會這樣呢?

萌新求解惑 謝謝!

ringa_leeringa_lee2683 天前957

全部回覆(4)我來回復

  • 学习ing

    学习ing2017-06-15 09:23:19

    同萌新,請問你JDK是哪個版本的呢,我在自己的IDE上寫Integer i = 1;是沒問題的,最近更新到JDK8,但我想JDK7應該也是可以的,不知道之前的版本自動裝箱的限制是什麼。你要不試試看升級一下?

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-15 09:23:19

    JDK 1.5之後, 有一個自動裝包和自動拆包的特性, 會在這種原始數據類型和其對象類型做自動轉換, 官方文檔:

    https://docs.oracle.com/javas...

    回覆
    0
  • 滿天的星座

    滿天的星座2017-06-15 09:23:19

    在JDK1.5以後是可以自動裝箱拆箱的

    回覆
    0
  • 巴扎黑

    巴扎黑2017-06-15 09:23:19

    老師的程式碼是一個自動裝箱的過程,Integer是int的包裝類別.你的JDK版本應該比較老了.

    回覆
    0
  • 取消回覆