java中Integer數值比較
阿新 • • 發佈:2019-01-26
java中的Interger數值比較
首先,分別出“==”和“equal”的差別:“==”是對應的地址相等和內容相等,“equal”是對應的內容想等;
然後,Integer物件在進行計算比較是會進行自動拆箱,也就是說Integer a = 10; int b = 10; 判斷a是否==b時,a會進行自動拆箱,a相當於a.intValue();
最後,對於-128~127的值,被裝箱後,會放在記憶體裡重用,但是如果超過了這個值,系統就是重新new一個物件。
例項如下:
public class IntergerTest { public static void main(String[] args){ int a1 = 10; int b1 = 10; Integer a2 = 10;//裝箱,相當於Integer.valueOf(10); Integer b2 = 10; Integer a3 = 210; Integer b3 = 210; int a4 = 210; int b4 = 210; //自動拆箱 if(a1 == a2){ System.out.println("a1 == a2"); }else{ System.out.println("a1 !== a2"); } if(a1 == b1){ System.out.println("a1 == b1"); }else{ System.out.println("a1 !== b1"); }//"=="比較的是物件的地址,"equal"比較的是變數的內容 /*對於–128到127(預設是127)之間的值,被裝箱後,會被放在記憶體裡進行重用 但是如果超出了這個值,系統會重新new一個物件*/ if(a2 == b2){ System.out.println("a2 == b2"); }else{ System.out.println("a2 !== b2"); } if(a3 == b3){ System.out.println("a3 == b3"); }else{ System.out.println("a3 !== b3"); } if(a4 == b4){ System.out.println("a4 == b4"); }else{ System.out.println("a4 !== b4"); } //自動拆箱 if(a4 == a3){ System.out.println("a4 == a3"); }else{ System.out.println("a4 !== a3"); } } }
結果如下:
a1 == a2
a1 == b1
a2 == b2
a3 !== b3
a4 == b4
a4 == a3