亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:11日期:2022-08-17 17:06:43

在最近的開發(fā)中,我踩到一個(gè)坑,過程是這樣的。我需要在Java中判斷兩個(gè)字符串是否相等,按照以往的經(jīng)歷使用 == 雙等號(hào)的操作符來判斷,但是在Java中,這樣寫卻沒有實(shí)現(xiàn)我想要的效果。經(jīng)過查閱資料后,把得到的經(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。通過字面賦值的時(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,不是通過這種字面的方式被賦值的,即便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é)果是falseequals()方法原理

為什么可以使用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è)字符串的引用是否相等,也就是說兩個(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)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 99精品国产成人一区二区在线 | 一区在线看| 澳门成人免费永久视频 | 亚洲第一精品福利 | 亚洲午夜久久久久久91 | 国产麻豆剧看黄在线观看 | 激情自拍视频 | 第一福利在线观看 | 国产亚洲精品免费 | 精品视频在线观看你懂的一区 | 狠狠久久| 男人的午夜影院 | 美女视频黄a视频全免费网站一区 | 欧美伦理片在线播放 | 亚洲欧美综合网站 | 日本免费毛片在线高清看 | 狠狠一区 | 欧美日韩一区在线观看 | 国产国产精品人在线视 | 国产区视频在线 | 国产自愉怕一区二区三区 | 久久综合九色综合桃花 | 白桃花在线 | 免费日本毛片 | 一级毛片欧美一级日韩黄 | 国产亚洲精品久久久久久牛牛 | 国产一级片网址 | 亚洲啊啊啊啊啊 | 性视频网站在线 | 岛国激情片 | a大片久久爱一级 | 久久ri精品高清一区二区三区 | 久久精品国产久精国产果冻传媒 | 免费国产成人综合 | 在线亚洲播放 | 成人午夜在线播放 | 日韩不卡在线观看 | 天天天天鲁天天拍一拍 | 免费三级黄色 | 国产一区曰韩二区欧美三区 | 国产精品黄在线观看免费软件 |