在Java中,使用“==”通常比較兩個變量的地址,也就是說,如果兩個變量存儲在同一個內(nèi)存單元中,它們的結(jié)果將相等。對于兩個字符串stringa=“1234”stringB=“1234”,對于兩個變量a和B,當(dāng)使用“==”和a.equals(B)時,它們的結(jié)果是相等的,因為兩個字符串a(chǎn)和B后面是兩個字符串常量,并且它們在內(nèi)存中的存儲位置相同,所以“==”和a.equals(B)的結(jié)果是相等的;
成都創(chuàng)新互聯(lián)專注于濱湖企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),購物商城網(wǎng)站建設(shè)。濱湖網(wǎng)站建設(shè)公司,為濱湖等地區(qū)提供建站服務(wù)。全流程按需定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)但是對于字符串a(chǎn)=newstring(“1234”)字符串B=newstring(“1234”),雖然a和B的結(jié)果都是“1234”,但是用“==”來判斷時,結(jié)果是不相等的,因為此時a和B是兩個對象,內(nèi)存位置不相等,所以“=”他的判斷是不相等的,此時,使用a.equals(b)得到的結(jié)果是正確的;
使用a.equals的原因是(b)結(jié)果是兩個字符串相同,因為string類重寫了equal()方法。他的比較方法是遍歷兩個字符串中的每個字符。只有當(dāng)兩個字符串的每個位置的字符相同時,此方法返回的值才會相等(true)。因此,在我們的開發(fā)過程中,當(dāng)遇到字符串比較時,我們使用stringequals()方法進(jìn)行判斷,這樣可以減少很多bug。同樣,我們不僅可以使用equal()方法進(jìn)行字符串比較,還可以使用equal()方法對任意兩個對象進(jìn)行比較;
閱讀以上內(nèi)容后,您知道Java字符串比較嗎?
java中的字符串比較方法?眾所周知,Java中創(chuàng)建字符串(對象)的方法有很多:[2]直接定義字符串常量
3]通過實例化字符串類創(chuàng)建字符串對象
Java中的字符串可以直接作為對象操作。原則是什么?
例如:
1,literalquantityofstring,stringconstantpool
Java中字符串的literalquantity是一對用雙引號括起來的字符串,如“Chinese”。
字符串常量是常量池。當(dāng)stringSTR=“string”時,編譯器將檢查在不朽生成中是否有對常量的引用。如果存在引用,編譯器將直接將地址分配給堆棧。如果沒有引用,編譯器將首先在不朽生成中打開一個內(nèi)存空間,然后將地址分配給堆棧指針。
也就是說,字符串對象的引用仍然存儲在字符串常量池中。
2.實例化string對象
該方法根據(jù)string對象重新創(chuàng)建一個string對象,在堆內(nèi)存中添加新的內(nèi)存塊后,將指針賦給堆棧指針。