高琪Java視頻里,這個(gè)將int類(lèi)型的值直接賦值給Integer對(duì)象的語(yǔ)句怎么會(huì)通過(guò)編譯呢?
問(wèn)題描述
最近看高琪Java300篇教程,里面有句代碼高老師一筆帶過(guò)了,但是細(xì)細(xì)看總覺(jué)得其中蘊(yùn)含的知識(shí)點(diǎn)不理解,代碼如下:
public class Test063 { public static void main(String[] args){ Integer i = Integer.parseInt('234'); System.out.println(i); }}
第二句Interger.parseInt('234')我查看了源碼,
上面明明說(shuō)parseInt方法返回的是int類(lèi)型的值,可它怎么能直接賦值給一個(gè)Integer對(duì)象呢?
我又做了下實(shí)驗(yàn)
Integer a = 1;//報(bào)錯(cuò)Integer b = Integer.parseInt('1');//編譯通過(guò)
結(jié)果讓我非常懵逼,為什么會(huì)這樣呢?
萌新求解惑 謝謝!
問(wèn)題解答
回答1:同萌新,請(qǐng)問(wèn)你JDK是哪個(gè)版本的呢,我在自己的IDE上寫(xiě)Integer i = 1;是沒(méi)問(wèn)題的,最近更新到JDK8,但是我想JDK7應(yīng)該也是可以的,不知道之前的版本對(duì)自動(dòng)裝箱的限制是什么。你要不試試看升級(jí)一下?
回答2:JDK 1.5之后, 有一個(gè)自動(dòng)裝包和自動(dòng)拆包的特性, 會(huì)在這種原始數(shù)據(jù)類(lèi)型和其對(duì)象類(lèi)型做自動(dòng)轉(zhuǎn)換, 官方文檔:
https://docs.oracle.com/javas...
回答3:在JDK1.5以后是可以自動(dòng)裝箱及拆箱的
回答4:老師的代碼是一個(gè)自動(dòng)裝箱的過(guò)程,Integer是int的包裝類(lèi).你的JDK版本應(yīng)該比較老了.
