Kuinka vertailla kahta merkkijonoa Java
Menetelmät merkkijonojen vertailuun Java
Java tarjoaa erilaisia menetelmiä, joiden avulla voit verrata kahta merkkijonoa Java. Merkkijonojen vertailu sisään Java on ominaisuus, joka sovittaa merkkijonon merkkijonoon.
Opi vertaamaan merkkijonoja Java, voit käyttää seuraavien luokkien tarjoamia menetelmiä.
- String luokka alkaen Java.lang-paketti.
- Objects luokka alkaen Java.util-paketti.
- StringUtils-luokka paketista org.apache.commons.lang3.
Useimmat näistä Java merkkijonojen vertailumenetelmissä on ratkaisuja tapauksen huomiotta jättämiseen. Tässä Java opetusohjelmassa opit erilaisia menetelmiä, joilla voit vertailla kahta merkkijonoa.
Tapa 1: String equals() -metodi
- Java jono equals() -metodi vertaa kahta merkkijonoobjektia yhtäläisten merkkijonoarvojen saamiseksi.
Syntaksi:
public boolean equals(Object anObject)
equals()-metodin parametrit:
anObject – argumenttimerkkijono merkkijonojen vertailua varten.
equals()-metodin palautustyypit
- Palauttaa tosi, jos annettu merkkijonoliteraali on sama kuin ensimmäinen merkkijono.
- Palauttaa epätosi, jos ensimmäinen merkkijono ei ole sama kuin argumenttimerkkijono.
Esimerkiksi:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree)); } }
Odotettu tuotos:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Selitys:
- Sait epätosi viimeisessä tulosteessa, koska määritetyllä objektilla on eri kirjainkoko.
Huomautuksia: Käytä merkkijono yhtäsuuri -menetelmää kirjainkoolla eroteltuun merkkijonojen vertailuun. Käytä "equalsIgnoreCase" -menetelmää merkkijonoobjektien vertaamiseen eri merkkijonoarvoilla.
Tapa 2: Objects equals() -metodi
- Java Objektit yhtä kuin () menetelmä vertaa kahta merkkijonoobjektia selvittääkseen, onko niillä samat arvot.
Syntaksi:
public static boolean equals(Object a, Object b)
equals()-metodin parametrit
a – Argumenttimerkkijono ensimmäiselle merkkijonoobjektille.
b – Argumenttimerkkijono toiselle merkkijonoobjektille.
equals()-metodin palautustyypit
- Palauttaa tosi, jos merkkijonon literaalit ovat yhtä suuret. Nolla-arvon välittäminen molemmissa argumenteissa palauttaa myös tosi.
- Palauttaa epätosi, jos merkkijonon literaalit eivät ole yhtä suuret.
Esimerkiksi:
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
lähtö:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Selitys:
Tästä esimerkistä voit nähdä, että tulos on totuusarvo, koska verratut merkkijonot ovat yhtä suuret.
Menetelmä 3: String vertaa() -menetelmä
- Java merkkijono vertaa() menetelmä vertaa kahta merkkijonoa aakkosjärjestyksessä. Sitä kutsutaan yleensä leksikografiseksi järjestykseksi.
Syntaksi:
public int compareTo(String str)
vertaaTo()-menetelmän parametreja
str – merkkijono, jota verrataan nykyiseen merkkijonoon.
vertaaTo()-menetelmä palauttaa
- 0 – Palauttaa nollan, jos määritetty objekti on yhtä suuri kuin nykyinen merkkijono.
- < 0 – Palauttaa luvun, joka on pienempi kuin nolla, jos tämä merkkijono on pienempi kuin määritetty objekti.
- > 0 – Palauttaa nollaa suuremman luvun, jos tämä merkkijono ylittää annetun merkkijonon.
Esimerkiksi:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo)); String stringThree = "GURU99"; // u = 117, U = 85, result = 117-85 = 32 System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree)); } }
Odotettu tuotos:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Selitys:
Ensimmäinen tulos palauttaa arvon nolla, koska ensimmäinen ja toinen merkkijono ovat samat.
Toinen tulos palauttaa arvon kolmekymmentäkaksi, koska merkit ovat erilaisia.
Huomautus: Jos haluat ohittaa tapaukset, voit käyttää "compareToIgnoreCase" -menetelmää.
Tapa 4: StringUtils equals() -metodi
- Java StringUtils equals() menetelmä vertaa kahden merkkijonon yhtäläisyyttä.
Varmista, että olet lisännyt ohjelmaan kirjaston "org.apache.commons.lang3". Näin voit verrata merkkijonoja StringUtil-menetelmillä.
Käytä tätä Maven-projekteissa ohjaavat lisätäksesi kirjaston projektiin.
Jos kuitenkin haluat lisätä kirjaston ilman rakennustyökaluja, käytä tätä ohjaavat.
Syntaksi:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() -metodin parametrit
- cs1 – Ensimmäisen argumentin merkkijono.
- cs2 – Toisen argumentin merkkijono.
StringUtils equals() -metodi palauttaa
- Palauttaa tosi, jos merkkijonovertailu on yhtä suuri. Sitä sovelletaan, jos välität nolla-arvon kahdessa argumentissa.
- Palauttaa epätosi, jos merkkijonovertailu ei ole yhtä suuri.
Esimerkiksi:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
lähtö:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Selitys:
Koska ensimmäisen ja toisen merkkijonon sisältö on sama, tulos palauttaa tosi.
Voit käyttää "equalsIgnoreCase"-menetelmää kirjainkoon huomiotta jättämiseen.
Tapa 5: StringUtils equalsAny() -metodi
- Java StringUtils equalsAny() menetelmä tarkistaa, onko argumenteissa merkkijono.
Syntaksi:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
StringUtils equalsAny()-metodin parametrit
- merkkijono – Ensimmäisen argumentin merkkijonoarvo. Argumentilla voi myös olla nolla-arvo.
- searchStrings – Joukko merkkijonoargumentteja, joiden avulla menetelmä selvittää, onko ensimmäinen argumenttimerkkijono olemassa.
StringUtils equalsAny() -metodi palauttaa
- Palauttaa tosi, jos vastaava merkkijono on hakumerkkijonojen muuttujamäärässä. Tämä pätee, jos molemmat argumentit ovat tyhjiä.
- Palauttaa arvon false, jos vastaava merkkijono ei vastaa yhtään merkkijonoa muuttujamäärässä hakumerkkijonoja.
Esimerkiksi:
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
lähtö:
is Guru99 available: true is GURU99 available: false
Selitys:
Koska ensimmäisen ja toisen merkkijonon sisältö on yhtä suuri, tulos palauttaa tosi. Voit käyttää "equalsAnyIgnoreCase" -menetelmää kirjainkoon huomiotta jättämiseen.
Tapa 6: Käytä ==-operaattoria
Merkkijonojen ==-operaattori tarkistaa, onko objektiviittauksilla sama osoite.
Esimerkiksi:
public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree)); } }
Odotettu tuotos:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Selitys:
- Ensimmäinen tulos palauttaa loogisen arvon tosi. Merkkijonot, joilla on sama sisältö, lisätään samaan merkkijonoon, joten merkkijonolla on yksi osoite.
- Toinen tulos palauttaa loogisen arvon false. Objekteilla on erilainen sisältö, mikä johtaa muihin merkkijonoihin. Tämä tarkoittaa, että merkkijonoilla on erilliset objektiviitteet; joten tulos on väärä.
Tapa 7: Mukautetun menetelmän luominen kahden merkkijonon vertailua varten Java
Luo menetelmä, joka vertaa kahta merkkijonoa käyttämällä leksikografista järjestystä.
Syntaksi:
public static int compareTwoStrings(String str1, String str2)
Mukautetut menetelmäparametrit
- str1 – verrattava merkkijono.
- str2 – merkkijono, johon verrata.
Mukautettu menetelmä palauttaa
- 0 – Palauttaa nollan, jos ensimmäinen merkkijono on yhtä suuri kuin toinen merkkijono.
- < 0 – Palauttaa luvun, joka on pienempi kuin nolla, jos ensimmäinen merkkijono on pienempi kuin toinen merkkijono.
- > 0 – Palauttaa nollaa suuremman luvun, jos ensimmäinen merkkijono on suurempi kuin toinen merkkijono.
Esimerkiksi:
public class CompareTwoStrings { public static int compareTwoStrings(String stringOne, String stringTwo) { int lengthOfStringOne = stringOne.length(); int lengthOfStringTwo = stringTwo.length(); int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo); for (int i = 0; i < minStringLength; i++) { char stringOneCharValue = stringOne.charAt(i); char stringTwoCharValue = stringTwo.charAt(i); if (stringOneCharValue != stringTwoCharValue) { return stringOneCharValue - stringTwoCharValue; } } if (lengthOfStringOne != lengthOfStringTwo) { return lengthOfStringOne - lengthOfStringTwo; } else { return 0; } } public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo)); } }
Odotettu tuotos:
is Guru99 equal to Guru99: 0
Selitys:
Tulos palautti arvon nolla, mikä tarkoittaa, että mukautettu toiminto toimii odotetulla tavalla.
Yhteenveto:
- Java Vertaa kahta merkkijonoa käytettävä menetelmä riippuu seuraavista tekijöistä.
- Halu hallita menetelmääsi. Luo tässä tapauksessa mukautettu menetelmä.
- Et voi käyttää Legacy-koodia. kanssa Java 6 ja alempi.
- Menetelmä, jolla on optimaalinen suorituskyky.
- Tietotyyppi, jonka kanssa työskentelet. Esimerkiksi merkkijonon täsmääminen muuttujaargumenttien joukosta.
- Ulkoistetun kirjaston tarjoamat ominaisuudet. Esimerkiksi StringUtils-kirjasto tarjoaa erilaisia menetelmiä merkkijonojen vertailuun.