==是判斷兩個變量或實例是不是指向同一個內存空間,用來比較對象引用(地址)。
equals是判斷兩個變量或實例所指向的內存空間的值是不是相同,比較對象存儲內容(值)
例如:
String str1 = new String("abc");
String str2 = new String("abc");
str1 == str2 false
比較引用地址。
str1.equals(str2) true.
比較字符串內容。
String str1 = "abc";
String str2 = "abc";
str1 == str2 true
str1.equals(str2) true
這個結果是字符串池的原因,和數據庫連接池類似。
不要使用==運算符來檢測兩個字符串是否相等!它只是測定兩個串是否存儲在同一個位置。當然,如果串是在同一個位置,那麼它們必定相等。但是確實有可能吧串的多個拷貝存放在不同的地方。