天天看點

簡述“==”和equals有什麼差別

== 的作用

對于基本類型來說,它就是比較兩個變量的值是否相等;對于引用類型來說,它其實是在比較兩個引用變量是否引用的是同一塊堆記憶體空間,或者說是否指向同一塊堆記憶體空間

int a = 5;
int b = 5;
System.out.println(a==b); //true

String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
System.out.println(str1==str2); //false str1和str2分别指向不同的堆記憶體空間
System.out.println(str1==str3); //true 它們都是指向同一個的堆記憶體空間
           

equals 的作用

成員函數equals要稍微複雜一些,由于不同類中的equals的定義可能不同,是以其含義也可能不同。對于字元串類型,equals方法用來比較兩個字元串的内容是否相等

String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
System.out.println(str1.equals(str2)); //true
System.out.println(str1.equals(str3)); //true 
           

注意: 如果一個自定義的類中沒有顯式地定義equals方法,那麼equals方法的作用與比較運算符 “ == ” 是一樣的,都是用來比較兩個變量是否指向同一個對象。

public class test{
	test(){}
	public static void main(String[] args){
		test a = new test();
		test b = new test();
		test c = a;
		System.out.println(a.equals(b)); //false
		System.out.println(a.equals(c)); //true 
	}
}
           

繼續閱讀