天天看點

java複習九:== 與 equals

一、先說明差別

== : 作用是判斷兩個對象的位址是不是相等。即,判斷兩個對象是不是同一個對象。ps:(基本資料類型==比較的是值,引用資料類型==比較的是記憶體位址)

equals() : 作用也是判斷兩個對象是否相等。但它一般有兩種使用情況:

情況1:類沒有覆寫 equals() 方法。則通過 equals() 比較該類的兩個對象時,等價于通過“==”比較這兩個對象。

情況2:類覆寫了 equals() 方法。一般,我們都覆寫 equals() 方法來兩個對象的内容相等;若它們的内容相等,則傳回 true (即,認為這兩個對象相等)。

情況1說明:當類沒有重寫equals方法,則使用Object的equals方法,見源碼可知,equals等價于==。

java複習九:== 與 equals

二、舉個栗子

public class test {
public static void main(String[] args) {
// a 為一個引用
String a = new String("ab"); 
// b為另一個引用,但是引用的對象内容一樣
String b = new String("ab"); 
// ab放在常量池中
String aa = "ab"; 
// 從常量池中查找ab
String bb = "ab"; 
// true
if (aa == bb) 
System.out.println("aa==bb");
// false,不是同一對象,兩個位址不同。
if (a == b) 
System.out.println("a==b");
// true
if (a.equals(b)) 
System.out.println("a equals b");
// true
if (42 == 42.0) { 
System.out.println("true");
}
}
}