java中Integer i1= 0; Integer i2= 0; 為什么可以用 == 符號呢


java中Integer i1= 0; Integer i2= 0;  有i1 == i2,且有i1 = 1;那么i2為什么不會變成1呢?

我這個時候的想法是:這是因為java中整型常量是基於int的,而java中有自動包裝機制,也就是說看起來i1,i2是Integer類型,但是其底層還是基於int類型的(不能理解的話在java中還有一個地方那就是Arrays.asList(T...args) 他返回一個基於數組的List,如果在List中改變其大小,那么將會引發異常[UnsupportedOperationException]),所以指向的是同一個值(int),那么可以用==符號也就可以理解了,而如果你通過new Integer(0) 賦值給i1 那么,由於是在新堆中新開辟了一塊內存,所以用 == 符號在相同對象之間是比較內存地址,那么肯定是false,且不說相同對象,又因為其中i2是基於int類,在潛在比較重就是返回一個false了,雖然表面上看起來他們是相同類型!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM