天天看點

“==”和equals()方法差別 (java經典面試題)

==:

  • 比較兩基本類型變量的值是否相等
  • 比較兩個引用類型的值 即記憶體位址是否相等,即是否指向同一對象

equals():

  • 兩個對象的内容是否一緻
public class TestEquals {
	public static void main(String[] args){
		Object obj;
		String str;
		String str1 = new String("qqq");
		String str2 = new String("qqq");
		System.out.println(str1.equals(str2)); //true
		System.out.println(str1 == str2); //false
		
	}

}
           

如上代碼:

str1.equals(str2)  :比較所指的對象的内容是否一緻 

str1 == str2 : 比較str1和str2  的值即記憶體位址是否相等,即是否是指向同一對象

String str3,str4;
		str3 = "qqq";
		str4 = "qqq";
		System.out.println(str3.equals(str4)); //true
		System.out.println(str3== str4); //true
           

上述代碼是引用字元串常量對象,其中str3 str4 具有相同的引用,因而具有相同的實體。

PS:自定義類須重寫equals(),否則比較結果總是false