2、
integer i1 = 127;
integer i2 = 127;
integer i3 = 128;
integer i4 = 128;
int i5 = 127
system.out.println(i1==i2); //true
system.out.println(i3==i4); //false
system.out.println(i1==i5); //true 因為會觸發拆箱操作,所有i1的數會在常量池中,當i5取127時,就會直接指向常量池裡的數
當-1273、
double i1 = 127.0;
double i2 = 127.0;
double i3 = 128.0;
double i4 = 128.0;
system.out.println(i1==i2); //false
system.out.println(i3==i4); //false
浮點數和整數型不一樣,因為整數型在一定範圍內的數字型別是有個數限制的,浮點數沒有限制,所以浮點數都是重新分配記憶體。
4、boolean:boolean提前建立了true和false兩個物件,所以都是直接呼叫這兩個物件,因此所有的裝箱的true或者false都是相等的
5、相同不同裝箱的總結
這時因為int是integer的例項類,所以內部判斷equals時會將num1的value與nums2進行比較
public boolean equals(object obj)
return false;
}
這段equals的原始碼意思是,只要obj是integer的例項類,就把obj轉化為int基本型別進行比較,同時value就是此integer的int型別,所以相當於只比較了一下數字是否相等
7、當進行運算操作時,都會進行對封裝類進行自動拆箱操作,所以==返回的都是true
8、string重寫了object的equals方法:"=="比較兩個變數本身的值,即兩個物件再記憶體中的位址。equals比較兩個字串的內容是否相等
java拆箱和裝箱
1 什麼是拆箱和裝箱?裝箱 用基本型別物件的引用型別包裝基本型別,使其具有物件的性質,比喻把int包裝成integer,拆箱 拆箱裝箱是相反的操作,就是把類型別轉化為基本型別,比喻把integer轉化為int 比喻 integer i 2 裝箱,此時會自動呼叫valueof方法,即和 integer...
Java 裝箱 拆箱
1.裝箱過程是通過呼叫包裝器的valueof方法實現的,而拆箱過程是通過呼叫包裝器的 value方法實現的。代表對應的基本資料型別 2.通過valueof方法建立integer物件的時候,如果數值在 128,127 之間,便返回指向integercache.cache中已經存在的物件的引用 否則建立...
java裝箱拆箱
裝箱 將基本型別轉換為包裝類。integer i1 10 自動裝箱 valueof 方法,裝箱 顯式裝箱 integer i2 integer 10 顯式裝箱 integer i3 new integer 10 i3放在棧上,new integer 10 放在堆上。i3儲存的是new integer...