== : 它的作用是判斷兩個對象的地址是不是相等。即,判斷兩個對象是不是同一個對象(基本數(shù)據(jù)類型==比較的是值,引用數(shù)據(jù)類型==比較的是內(nèi)存地址)。
equals() : 它的作用也是判斷兩個對象是否相等。但它一般有兩種使用情況:
情況1:類沒有覆蓋 equals() 方法。則通過 equals() 比較該類的兩個對象時,等價于通過“==”比較這兩個對象。
情況2:類覆蓋了 equals() 方法。一般,我們都覆蓋 equals() 方法來比較兩個對象的內(nèi)容是否相等;若它們的內(nèi)容相等,則返回 true (即,認為這兩個對象相等)。
Tips:
String的equals是重載過的,如果是兩個String相比較會比較值,否則會使用"==",使用new String會開辟新的空間,使用==比較的話得到的結果為false:
String a = new String("ab"); // a 為一個引用
String b = new String("ab"); // b為另一個引用,對象的內(nèi)容一樣
System.out.println(a.equals(b));//true
System.out.println(a==b);//false
而使用String str ="XXX"的形式則會放入常量池,再次定義同樣的變量時會先去String pool中查找,如果找到的話,將常量池中的地址指向新定義的引用,所以使用"=="比較得到的結果是false:
String aa="ab";
String bb="ab";
System.out.println(aa==bb);//true
System.out.println(aa.equals(bb));//true