自動(dòng)裝箱與拆箱的誤用
在JAVA JDK1.5以后具有的自動(dòng)裝箱與拆箱的功能,所謂的自動(dòng)裝箱
與拆箱也就是把基本的數(shù)據(jù)類型自動(dòng)的轉(zhuǎn)為封裝類型。
如:自動(dòng)裝箱,它可以直接把基本類型賦值給封裝類型
Integer num = 10 ;
Double d = 2d ;
自動(dòng)拆箱,它可以把封裝類型賦值給基本類型
int num = new Integer(10);
double d = new Double(2d);
知道了自動(dòng)裝箱與拆箱后我們現(xiàn)看一下下面這兩個(gè)程序代碼:
































大家看看這兩個(gè)程序代碼的結(jié)果是怎么樣的呢?
其實(shí)在AutoBoxDemo1.java中結(jié)果是:d1==d2
在AutoBoxDemo2.java中結(jié)果是:d1!=d2
為什么結(jié)果會(huì)是這樣的?我們來(lái)看了解一下!
其實(shí)剛剛這兩個(gè)程序結(jié)果的不同是與==運(yùn)算符比較有關(guān),==是用來(lái)比較
兩個(gè)基本數(shù)據(jù)類型的變量是否相等的,而事實(shí)上==也用于判斷兩個(gè)對(duì)象
變量名是否參考同一對(duì)象。在自動(dòng)裝箱時(shí)對(duì)于值從-128到127之間的值
它們被裝箱為Integer對(duì)象后會(huì)在內(nèi)存中重用,所以在AutoBoxDemo1.java
中是相等的,而超過(guò)了從-128到127之前的值時(shí),被裝箱后的Integer對(duì)象
并不會(huì)被重用。所以AutoBoxDemo2.java中是不相等的。
posted on 2007-12-12 09:58 一鳴 閱讀(1814) 評(píng)論(2) 編輯 收藏 所屬分類: J2SE