1. 程式人生 > >java中Integer數值比較

java中Integer數值比較

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