比較兩個Integer 物件是否相等
阿新 • • 發佈:2018-12-21
這個沒什麼好說的,感覺大家看完程式碼和結果就應該明白了,很簡單,但是容易混
程式碼如下--------------------------------
Integer i1 = 100, i2 = 100, i3 = 150, i4 = 150; Integer i5 = new Integer(100); Integer i6 = new Integer(100); Integer i7 = new Integer("100"); Integer i8 = Integer.parseInt("100"); System.out.println(i1 == i2);//true System.out.println(i3 == i4);//false System.out.println(i1==i5);//false System.out.println(i6==i5);//false System.out.println(i1==i7);//false System.out.println(i8==i7);//false System.out.println(i1==i8);//true System.out.println(i5.equals(i6));//true System.out.println(i3.equals(i4));//true
----------------------------結果如下
這裡面這要是有一個這個原因 :JVM中一個位元組一下的整型資料(即[128,127])會在JVM啟動時載入進記憶體,所以除非用new Integer()顯示的建立物件,否則都是同一物件,如上面顯示,i1,i2,i8都沒有顯示的建立Integer物件,所以他們三個是相等的,而integer類從寫的equals方法
所以,只要Integer物件的值一樣,返回結果就是相等