回顧java基礎知識時,無意中看到String字符串的判斷相等,自己也被繞了一下,寫下來權當記錄一下。
public static void main(String[] args) {
String a="abc";
String b="abc";
if(a==b){
System.out.println("a==b");
}else{
System.out.println("a!=b");
}
}
看到這段代碼,我的第一反應是輸出:"a!=b",但是運行后是"a==b",恩,什么鬼,我混亂了。。。
在java中字符串的值是不可更改的,這兩個相同的值在內存中存了一份,指向了同一個對象。"=="比較的是兩個對象的內存地址,所以輸出的結果是"a==b"。
public static void main(String[] args) {
String a= new String("abc");
String b= new String("abc");
if(a==b){
System.out.println("a==b");
}else{
System.out.println("a!=b");
}
}
但是如果是這種情況的話,那就肯定是"a!=b"了,new String 定義了兩個內存地址,指向了不同的對象,"=="比較就肯定是"a!=b"。
在這里就可以用equal來比較了,equal比較的是對象的內容是否相等。
有時候這種小的細節上面,之前根本就沒有注意到,只是在開發過程中發現,哦,這樣可能不對,換個方法唄或者百度下啥原因,開發完,這些也就忘到腦后,也沒有記錄下來的習慣,希望今年能把這些細節給記錄下來,提醒自己。