1. 程式人生 > >java 包裝器型別 基本型別 == equals

java 包裝器型別 基本型別 == equals

package wrapper;

public class MyTest {
	public static void main(String[] args) {
		int i = 1;
		Integer I11 = 1;
		Integer I12 = 1;
		Integer I21 = 2;
		Integer I13 = new Integer(1);
		Integer I14 = new Integer(1);
		
		double d1 = 1.0D;
		double d2 = 2.0D;
		Double D1 = 1.0D;
		Double D2 = new Double(2.0D);
		
		//1
		System.out.println("============1============");
		System.out.println(i == I11); //t
		System.out.println(i == I13); //t
		System.out.println(i == I21); //f
		System.out.println(i == D1); //t
		
		//2
		System.out.println("\n============2============");
		System.out.println(I11 == I12); //t
		System.out.println(I11 == I21); //f
		System.out.println(I11 == I13); //f
		System.out.println(I13 == I14); //f
		//System.out.println(I11 == D1); //型別不同不能比較
		
		//3
		System.out.println("\n============3============");
		System.out.println(I11.equals(i)); //t
		System.out.println(I21.equals(i)); //f
		System.out.println(I21.equals(d2)); //f
		System.out.println(I21.equals(d1)); //f
		
		//4
		System.out.println("\n============4============");
		System.out.println(I11.equals(I12)); //t
		System.out.println(I11.equals(I13)); //t
		System.out.println(I11.equals(I21)); //f
		System.out.println(I11.equals(D1)); //f
		System.out.println(I11.equals(D2)); //f
	}
}
//1、基本型別和包裝器型別進行“==”運算子的比較,包裝器型別將會自動拆箱變為基本型別後再進行比較
//2、兩個型別相同的包裝器的物件(型別不同不能比較)進行“==”比較時,比較的是引用是否相等, 
//  只要有一個物件是new獲得的,返回false
//3、包裝器型別呼叫equals(基本型別)方法,先會進行自動裝箱,基本型別轉換為包裝器型別,若型別不同返回false,
//	若型別相同,則比較值,如果值相同,則返回true,否則返回false。
//4、兩個包裝器型別進行equals()比較,首先equals()會比較型別,
//  如果型別相同,則繼續比較值,如果值也相同,返回true