最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

相等判斷操作符==

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

使用==判斷字符串時(shí),判斷的是兩個(gè)字符串是否指向同一個(gè)對(duì)象。如果兩個(gè)字符串指向同一個(gè)對(duì)象,那么它們就是相同的,使用==比較的結(jié)果也就是True。如果兩個(gè)字符串指向不同的對(duì)象,那么它們不相同,使用==比較的結(jié)果也就是False。
通過(guò)字面賦值的時(shí)候,相同的字符串會(huì)指向同一個(gè)對(duì)象,例如:

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

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

String str3 = new String("abcde");//運(yùn)行時(shí)把"abcde"放入堆里面,在堆中創(chuàng)建一個(gè)對(duì)象
str1 == str3; //str1和str3指向不同的對(duì)象,結(jié)果是false

相等判斷方法equals()

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

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

equals()方法原理

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

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

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

總結(jié)

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

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

您可能感興趣的文章:

相關(guān)文章

  • Java String類的常用方法匯總

    Java String類的常用方法匯總

    這篇文章主要為大家詳細(xì)匯總了Java String類的常用方法,感興趣的小伙伴們可以參考一下
    2016-07-07
  • SpringBoot3整合MyBatis出現(xiàn)異常:Property?'sqlSessionFactory'or?'sqlSessionTemplate'?are?required

    SpringBoot3整合MyBatis出現(xiàn)異常:Property?'sqlSessionFactory&a

    這篇文章主要介紹了SpringBoot3整合MyBatis報(bào)錯(cuò):Property?‘sqlSessionFactory‘?or?‘sqlSessionTemplate‘?are?required,其實(shí)不是個(gè)大問(wèn)題,只是自己編碼時(shí)遇到了,然后總結(jié)總結(jié)分享一下,如果有遇到類似問(wèn)題的,可以參考一下
    2022-11-11
  • Java設(shè)計(jì)模式的策略模式簡(jiǎn)析

    Java設(shè)計(jì)模式的策略模式簡(jiǎn)析

    這篇文章主要介紹了Java設(shè)計(jì)模式的策略模式簡(jiǎn)析,策略模式中定義了一系列的算法族,算法族指的是類似于一系列的行為、策略,策略模式將一系列的行為封裝成類,既可以說(shuō)是將每一種相類似的行為都封裝成一個(gè)類,也有可能存在特殊的不進(jìn)行封裝的行為,需要的朋友可以參考下
    2023-12-12
  • JAVA字符串格式化-String.format()的使用

    JAVA字符串格式化-String.format()的使用

    本篇文章主要介紹了JAVA字符串格式化-String.format()的使用,具有一定的參考價(jià)值,有需要的可以了解一下。
    2016-11-11
  • 如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類(圖文詳解)

    如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類(圖文詳解)

    這篇文章主要介紹了如何使用IDEA的groovy腳本文件生成帶JPA注解的實(shí)體類,本文通過(guò)圖文并茂實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Spring Boot集成 Spring Boot Admin 監(jiān)控

    Spring Boot集成 Spring Boot Admin 監(jiān)控

    這篇文章主要介紹了Spring Boot集成 Spring Boot Admin 監(jiān)控,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 在?Spring?Boot?中使用?Quartz?調(diào)度作業(yè)的示例詳解

    在?Spring?Boot?中使用?Quartz?調(diào)度作業(yè)的示例詳解

    這篇文章主要介紹了在?Spring?Boot?中使用?Quartz?調(diào)度作業(yè)的示例詳解,在本文中,我們將看看如何使用Quartz框架來(lái)調(diào)度任務(wù),Quartz支持在特定時(shí)間運(yùn)行作業(yè)、重復(fù)作業(yè)執(zhí)行、將作業(yè)存儲(chǔ)在數(shù)據(jù)庫(kù)中以及Spring集成,需要的朋友可以參考下
    2022-07-07
  • 如何使用java判斷是不是數(shù)字

    如何使用java判斷是不是數(shù)字

    這篇文章主要給大家介紹了關(guān)于如何使用java判斷是不是數(shù)字的相關(guān)資料,判斷一個(gè)字符串是否為數(shù)字是Java開(kāi)發(fā)中很常見(jiàn)的業(yè)務(wù)需求,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java實(shí)現(xiàn)Swing組件定制Button示例

    Java實(shí)現(xiàn)Swing組件定制Button示例

    這篇文章主要介紹了Java實(shí)現(xiàn)Swing組件定制Button,涉及java Swing組件Button相關(guān)屬性設(shè)置與使用操作技巧,需要的朋友可以參考下
    2018-01-01
  • 使用Spring Boot的LoggersEndpoint管理日志級(jí)別

    使用Spring Boot的LoggersEndpoint管理日志級(jí)別

    這篇文章主要為大家介紹了使用Spring Boot的LoggersEndpoint管理日志級(jí)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

腾冲县| 德昌县| 科尔| 遂川县| 邳州市| 焦作市| 静宁县| 汉寿县| 洮南市| 南召县| 河北区| 淄博市| 乌鲁木齐县| 遵化市| 富民县| 盐山县| 霍邱县| 固始县| 黑河市| 恩施市| 庐江县| 辉县市| 宁国市| 洪洞县| 广饶县| 西畴县| 防城港市| 新沂市| 青海省| 婺源县| 洪泽县| 大洼县| 怀化市| 吴堡县| 荆门市| 佛冈县| 塔城市| 兴宁市| 六盘水市| 西充县| 高平市|