java中String相等的判斷


回顧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比較的是對象的內容是否相等。

有時候這種小的細節上面,之前根本就沒有注意到,只是在開發過程中發現,哦,這樣可能不對,換個方法唄或者百度下啥原因,開發完,這些也就忘到腦后,也沒有記錄下來的習慣,希望今年能把這些細節給記錄下來,提醒自己。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM