Kuinka vertailla kahta merkkijonoa Java
⚡ Älykäs yhteenveto
Kahden merkkijonon vertailu Java voidaan tehdä useilla metodeilla, jotka vastaavat merkkijonoa yhtäsuuruuden tai järjestyksen suhteen. Tässä resurssissa selitetään seitsemän lähestymistapaa, mukaan lukien String equals, Objects equals, compareTo, StringUtils-metodit, ==-operaattori ja mukautettu vertailumetodi, joista jokaisesta löytyy esimerkkejä.

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 metodeja:
- Merkkijonoluokka java.lang-paketista.
- Objects-luokka java.util-paketista.
- StringUtils-luokka paketista org.apache.commons.lang3.
Useimmat näistä Java compare-strings-metodeilla on ratkaisuja kirjainkoon huomiotta jättämiseen. Tässä opetusohjelmassa opit eri metodit, joita voit käyttää kahden merkkijonon vertailemiseen.
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.
Huomautus: Käytä string equals() -metodia kirjainkoon huomioivaan merkkijonojen vertailuun. Käytä “equalsIgnoreCase” -metodia merkkijono-objektien vertailuun jättäen kirjainkoon huomiotta.
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ä näet, että tuloste on totuusarvo true, 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 yhtä suuret.
Toinen tulos palauttaa arvon kolmekymmentäkaksi, koska merkit ovat erilaiset.
Huomautus: Voit ohittaa kirjainkoon käyttämällä ”compareToIgnoreCase”-metodia.
Tapa 4: StringUtils equals() -metodi
Java StringUtils equals() menetelmä vertaa kahden merkkijonon yhtäläisyyttä.
Varmista, että olet lisännyt ohjelmaasi kirjaston ”org.apache.commons.lang3”. Tämän avulla voit vertailla merkkijonoja StringUtils-metodien avulla.
Käytä tätä Maven-projekteissa ohjaavat lisätäksesi kirjaston projektiin.
Jos kuitenkin haluat lisätä kirjaston ilman työkaluja, käytä tätä ohjaavat.
Syntaksi:
public static boolean equals(CharSequence cs1, CharSequence cs2)
StringUtils equals() -metodin parametrit
- cs1 – Ensimmäisen argumentin merkkijono.
- cs2 – Toisen argumentin merkkijono.
StringUtils equals() -metodi palauttaa
- Palauttaa arvon true, jos merkkijonojen vertailu on yhtäsuuri. Tämä pätee myös, jos kahdessa argumentissa on tyhjä arvo.
- 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 arvon true, jos vastaava merkkijono on olemassa muuttujan hakumerkkijonojen määrä -kohdassa. Tämä pätee, jos molemmat argumentit ovat null-arvoja.
- 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 totuusarvon true. Samansisältöiset merkkijonot lisätään samaan merkkijonopooliin, joten niillä on yksi yhteinen osoite.
- Toinen tulos palauttaa totuusarvon false. Objekteilla on eri sisältö, mikä johtaa eri merkkijonopooleihin. Tämä tarkoittaa, että merkkijonoilla on erilliset objektiviittaukset; näin ollen tuloste on false.
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.
