亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中判斷字符串是否相等的實現(xiàn)

 更新時間:2021年01月24日 08:38:04   作者:Chatopera博客  
這篇文章主要介紹了Java中判斷字符串是否相等的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

在最近的開發(fā)中,我踩到一個坑,過程是這樣的。我需要在Java中判斷兩個字符串是否相等,按照以往的經(jīng)歷使用 == 雙等號的操作符來判斷,但是在Java中,這樣寫卻沒有實現(xiàn)我想要的效果。經(jīng)過查閱資料后,把得到的經(jīng)驗分享給大家。

相等判斷操作符==

Java中,==相等判斷符用于判斷基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。 當判斷基本數(shù)據(jù)類型的時候判斷的是數(shù)值,當判斷引用數(shù)據(jù)類型時判斷變量是否指向同一引用對象。

使用==判斷字符串時,判斷的是兩個字符串是否指向同一個對象。如果兩個字符串指向同一個對象,那么它們就是相同的,使用==比較的結果也就是True。如果兩個字符串指向不同的對象,那么它們不相同,使用==比較的結果也就是False。
通過字面賦值的時候,相同的字符串會指向同一個對象,例如:

String str1="abcde";// 把"abcde"放入常量池中,編譯時產(chǎn)生
String str2="abcde";// 引用常量池中的對象,不會重新創(chuàng)建對象
str1 == str2; //str1和str2指向同一個對象,結果是true

但如果另有一個str3,不是通過這種字面的方式被賦值的,即便str3的值也是"abcde",例如:

String str3 = new String("abcde");//運行時把"abcde"放入堆里面,在堆中創(chuàng)建一個對象
str1 == str3; //str1和str3指向不同的對象,結果是false

相等判斷方法equals()

在Java中,可以使用equals()方法判斷字符串的內容是否相同。

String str1="abcde";
String str3 = new String("abcde");
str1.equals(str3);//str1和str3的值一樣,結果是true 
str1 == str3; //str1和str3指向不同的對象,結果是false

equals()方法原理

為什么可以使用equals()方法呢,我們看下String 類中的 equals()方法的源碼。

public boolean equals(Object anObject) {
  if (this == anObject) { //先比較兩個字符串的引用是否相等(是否指向同一個對象), 是直接返回true
    return true;
  }
  if (anObject instanceof String) { //兩個引用不等還會繼續(xù)比較
    String anotherString = (String)anObject;
    int n = value.length;
    if (n == anotherString.value.length) {
      char v1[] = value; //字符串類是用字符數(shù)組實現(xiàn)的, 先要拿到兩個字符串的字符數(shù)組
      char v2[] = anotherString.value;
      int i = 0;
      while (n-- != 0) { //然后對兩個數(shù)組逐個字符地進行比較
        if (v1[i] != v2[i])
          return false;
        i++;
      }
      return true;
    }
  }
  return false;
}

從上面的源碼可以看到, 當調用 String 類型數(shù)據(jù)的equals()方法時,首先會判斷兩個字符串的引用是否相等,也就是說兩個字符串引用是否指向同一個對象,是則返回true。
如果不是指向同一個對象,則把兩個字符串中的字符挨個進行比較。

總結

上述就是我為大家分享的java判斷兩個字符串是否相等的方法了,如果您也有類似的疑惑,不妨礙參照上述分析進行理解。在不斷的學習中,我相信會有更多的經(jīng)驗分享,歡迎大家持續(xù)關注。

到此這篇關于Java中判斷字符串是否相等的實現(xiàn)的文章就介紹到這了,更多相關Java 字符串相等內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • idea 多模塊項目依賴父工程class找不到問題的方法

    idea 多模塊項目依賴父工程class找不到問題的方法

    這篇文章主要介紹了idea 多模塊項目依賴父工程class找不到問題的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • java使用JDBC動態(tài)創(chuàng)建數(shù)據(jù)表及SQL預處理的方法

    java使用JDBC動態(tài)創(chuàng)建數(shù)據(jù)表及SQL預處理的方法

    這篇文章主要介紹了java使用JDBC動態(tài)創(chuàng)建數(shù)據(jù)表及SQL預處理的方法,涉及JDBC操作數(shù)據(jù)庫的連接、創(chuàng)建表、添加數(shù)據(jù)、查詢等相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-08-08
  • SparkSQL中的JSON內置函數(shù)全解析

    SparkSQL中的JSON內置函數(shù)全解析

    你是否曾經(jīng)為處理JSON數(shù)據(jù)而頭疼?SparkSQL為我們提供了強大的內置JSON函數(shù),讓JSON處理變得輕而易舉,本文將帶你深入了解這些函數(shù),感興趣的朋友一起看看吧
    2024-08-08
  • java實現(xiàn)汽車租賃系統(tǒng)

    java實現(xiàn)汽車租賃系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現(xiàn)汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 解決springboot引入swagger2不生效問題

    解決springboot引入swagger2不生效問題

    這篇文章主要為大家介紹了解決springboot引入swagger2不生效問題的方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Java 手寫LRU緩存淘汰算法

    Java 手寫LRU緩存淘汰算法

    本文主要講了如何通過哈希鏈表這種數(shù)據(jù)結構來實現(xiàn)LRU算法,提供了三種實現(xiàn)思路,第一種從雙向鏈表開始,借助于HashMap來實現(xiàn)滿足要求的LRUCache
    2021-05-05
  • Spring中@Transactional用法詳細介紹

    Spring中@Transactional用法詳細介紹

    這篇文章主要介紹了Spring中@Transactional用法詳細介紹的相關資料,需要的朋友可以參考下
    2017-02-02
  • SpringCloud Gateway使用詳解

    SpringCloud Gateway使用詳解

    Spring Cloud Gateway是一個基于Spring Boot 2.x和Spring WebFlux的API網(wǎng)關,可以幫助我們構建微服務架構中的統(tǒng)一入口。感興趣的同學可以參考一下
    2023-04-04
  • Java+opencv3.2.0實現(xiàn)hough直線檢測

    Java+opencv3.2.0實現(xiàn)hough直線檢測

    這篇文章主要為大家詳細介紹了Java+opencv3.2.0之hough直線檢測,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 淺談hibernate之映射文件VS映射注解

    淺談hibernate之映射文件VS映射注解

    下面小編就為大家?guī)硪黄獪\談hibernate之映射文件VS映射注解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論