java判斷字符串內(nèi)容是否相同 java如何比較字符串?
java如何比較字符串?Java中的字符串比較方法:1)dusting1。等于(string2)2)STR1==STR2。Java字符串比較是==比較引用,等于比較值。但是,不同聲明方法字符串的比較結(jié)
java如何比較字符串?
Java中的字符串比較方法:
1)dusting1。等于(string2)
2)STR1==STR2。
Java字符串比較是==比較引用,等于比較值。但是,不同聲明方法字符串的比較結(jié)果也不同。
例如:string STR1=new string(“a”)
string STR2=new string(“a”)
STR1==STR2 output false
STR1。等于(STR2)output true
如果這樣聲明
string STR1=“a”
string STR2=“a”
STR1==STR2 output true
STR1。Equals(STR2)output true
這是因?yàn)镋quals方法最初是一個(gè)被引用的字符串類(lèi),它在實(shí)現(xiàn)時(shí)重寫(xiě)該方法。
第一個(gè)聲明方法是聲明兩個(gè)對(duì)象,比較時(shí)使用“==”,它引用,并輸出false。因?yàn)樗鼈兊闹凳窍嗤?,所以?dāng)使用equals時(shí),它會(huì)進(jìn)行比較,并輸出true。
在第二種情況下,不是因?yàn)楸容^方法與第一種不同,而是因?yàn)槁暶鞣椒ú煌?。?dāng)聲明第二個(gè)聲明方法時(shí),會(huì)出現(xiàn)堆或堆棧共享現(xiàn)象。也就是說(shuō),如果它被聲明為class屬性,它將檢查堆棧中是否有與當(dāng)前聲明具有相同結(jié)構(gòu)的字符串。如果有,則直接將地址指向現(xiàn)有的內(nèi)存地址。方法中聲明的局部變量的工作方式相同,只是它是堆棧共享。