高琪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');//編譯通過
結果讓我非常懵逼,為什么會這樣呢?
萌新求解惑 謝謝!
問題解答
回答1:同萌新,請問你JDK是哪個版本的呢,我在自己的IDE上寫Integer i = 1;是沒問題的,最近更新到JDK8,但是我想JDK7應該也是可以的,不知道之前的版本對自動裝箱的限制是什么。你要不試試看升級一下?
回答2:JDK 1.5之后, 有一個自動裝包和自動拆包的特性, 會在這種原始數據類型和其對象類型做自動轉換, 官方文檔:
https://docs.oracle.com/javas...
回答3:在JDK1.5以后是可以自動裝箱及拆箱的
回答4:老師的代碼是一個自動裝箱的過程,Integer是int的包裝類.你的JDK版本應該比較老了.
