1. 程式人生 > >int和Integer有什麽區別?

int和Integer有什麽區別?

機制 microsoft val family jdk1 經歷 ont .com ()

可參考:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html

從Java 5開始引入了自動裝箱/拆箱機制,使得二者可以相互轉換

Integer和int比都會自動拆箱(jdk1.5以上)。拆箱--->從Integer轉為int;裝箱指的是從int-->Integer

Integer i5 = 127;//java在編譯的時候,被翻譯成-> Integer i5 = Integer.valueOf(127);

①無論如何,Integer與new Integer不會相等。不會經歷拆箱過程,引用指向堆的和指向常量池的內存地址不同,所以必然為false;


②兩個都是非new出來的Integer,如果數在-128到127之間,則是true,否則為false
java在編譯Integer i2 = 128的時候,被翻譯成-> Integer i2 = Integer.valueOf(128);而valueOf()函數會對-128到127之間的數進行緩存
③兩個都是new出來的,都為false
④int和integer(無論new否)比,都為true,因為會把Integer自動拆箱為int再去比

int和Integer有什麽區別?