1. 程式人生 > 其它 >==和equals的區別

==和equals的區別

1、==既可以比較基本型別,也可以比較引用型別。對於基本型別就是比較值,是否相等。對於引用型別就是比較記憶體的地址。

2、equals的話,它是屬於java.lang.Object類裡面的方法,如果該方法沒有被重寫過預設也是==。

(可以看到String等類的equals方法是被重寫過的,而且String類在日常開發中用的比較多,久而久之,形成了equals是比較值的錯誤觀點)。

3、具體要看自定義類有沒有重寫Object的方法來判斷。

4、通常情況,重寫equals方法,會比較類中的相應屬性是否都相等。

5、通常情況下,自定義類如果要使用equals 比較物件實體(屬性值)是否相同,需要對equals進行重寫

public class testObj{
	public static void main(String[] args){
		//==運算子 equals方法
		int i=10;
		int j=10;
		double d=10.0;
		//System.out.println(i==d);//true
		
		char c=10;
		//System.out.println(i==c);//TRUE
		
		Customer cust1=new Customer("djalei",21);
		Customer cust2=new Customer("djalei",21);
		//System.out.println(cust1==cust2);//false 地址不同。
		
		String str1=new String("alei");
		String str2=new String("alei");
		System.out.println(str1==str2);//false 
		System.out.println(cust1.equals(cust2));//false
		System.out.println(str1.equals(str2));//重寫了的
		
		//equlas()
		//只適用於引用資料型別
		//
	}
}