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了,雖然表面上看起來他們是相同類型!!