Java中"str1.equals(str2)"和"str1==str2"的區別


  大家好,這是我的第一篇博客,作為即將入職的學生,我現在的心情是既好奇又興奮,對未知的職場生活充滿了無限的憧憬,也想趕緊對大學生活say goodbye,因為自己的能力現在還比較有限,我想通過博客這個平台來慢慢提升自己,我想發一些平常在Java或者其他領域經常使用到的知識,不僅是對你們有幫助,同時也是我自己的進步,謝謝大家了。雖然我知道可能有很多人發過類似的博客或者技術貼,但是我盡量還是用我自己的語言來描述,支持原版。好的,廢話不多說,接下來就進入正題吧~

  我們直接從一個實例來開始我們今天的學習吧。

  我新建了一個class名為Test01

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="helloworld";

   System.out.println(a.equals(b));
  }
}

  大家看上述實例,答案會是什么呢,首先一點,我們要明白的問題是,不管是".equals()"還是"==",他的返回值是true或者是false,而不是0,1或者-1,所以上述實例的輸出值最終為true。現在我們將輸出的語句進行修改:

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="helloworld";

   System.out.println(a==b);
  }
}

  其輸出值仍為true。

  大家都明白,"=="比較的是2個對象的地址,而".equals()"比較的是2個對象的內容,那這個區別究竟體現在那個地方呢,咱們看接下來的實例。

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="hello" +new String("world");
  System.out.println(a.equals(b));
  }
}

 

  大家覺得現在的輸出是什么呢,沒錯,依然是true,因為".equals()"比較的是2個對象的內容,很明顯不管是字符串a還是字符串b,他們的值沒變,都是helloworld,所以返回的值依然是true,我們再看下一個實例。

public class Test01 {

  public static void main(String[] args){
   String a="helloworld";
   String b="hello" +new String("world");
  System.out.println(a==b);
  }
}

 

  沒錯,這個時候這個表達式的返回值就是false了。因為b2中的world是新申請的內存塊,而==判斷的是對象的地址而非值,所以不一樣。 

  想要搞懂這個其實還是不難的,大家只要注意以后在編程中是需要進行如何的比較即可~

  希望我的分享對大家有幫助,以后我也會積極更新微博,不管是簡單的或者是復雜的知識點,或者是我曾經做的項目之類的,我都會分享出我的經驗,謝謝大家一起學習,共同進步。


免責聲明!

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



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