Sådan sammenlignes to strenge i Java
⚡ Smart opsummering
Sammenligning af to strenge i Java kan gøres med flere metoder, der matcher en sekvens af tegn for lighed eller rækkefølge. Denne ressource forklarer syv tilgange, herunder String equals, Objects equals, compareTo, StringUtils-metoder, ==-operatoren og en brugerdefineret sammenligningsmetode, hver med eksempler.

Metoder til at sammenligne strenge i Java
Java giver forskellige metoder, du kan bruge til at sammenligne to strenge i Java. Strengesammenligning i Java er en funktion, der matcher en sekvens af tegn til en streng.
For at lære at sammenligne strenge i Java, kan du bruge metoderne fra følgende klasser:
- Stringklasse fra java.lang-pakken.
- Objektklassen fra java.util-pakken.
- StringUtils-klassen fra org.apache.commons.lang3-pakken.
De fleste af disse Java Metoder til sammenligning af strenge har løsninger til at ignorere store og små bogstaver. I denne vejledning lærer du de forskellige metoder, du kan bruge til at sammenligne to strenge.
Metode 1: Streng lig med() metode
Java String equals() metode sammenligner to strengobjekter for lige store strengværdier.
Syntaks:
public boolean equals(Object anObject)
equals() metodeparametre:
anObject – Argumentstrengen til sammenligning af strenge.
equals() metode returtyper
- Returnerer sand, hvis den angivne strengliteral er den samme som den første streng.
- Returnerer falsk, hvis den første streng ikke er den samme som argumentstrengen.
Eksempel:
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));
}
}
Forventet output:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Forklaring:
- Du fik falsk i det sidste output, fordi det angivne objekt har en anden store og små bogstaver.
Bemærk: Brug string equals()-metoden til at sammenligne strenge med forskel på store og små bogstaver. Brug "equalsIgnoreCase"-metoden til at sammenligne strengobjekter, mens store og små bogstaver ignoreres.
Metode 2: Objekter er lig med() metode
Java Objekter er lig med() metoden sammenligner to strengobjekter for at finde ud af, om de har de samme værdier.
Syntaks:
public static boolean equals(Object a, Object b)
equals() metodeparametre
a – Argumentstreng for det første strengobjekt.
b – Argumentstreng for det andet strengobjekt.
equals() metode returtyper
- Returnerer sand, hvis strengens literaler er ens. Hvis du sender en nulværdi i de to argumenter, vil det også returnere sand.
- Returnerer falsk, hvis strengens literaler ikke er ens.
Eksempel:
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)); } }
Output:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Forklaring:
Fra dette eksempel kan du se, at outputtet er en boolsk værdi af sand, da de sammenlignede strenge er ens.
Metode 3: String compareTo() metode
Java String compareTo() metoden sammenligner to strenge i alfabetisk rækkefølge. Det omtales normalt som leksikografisk orden.
Syntaks:
public int compareTo(String str)
compareTo() metodeparametre
str – Den streng, der skal sammenlignes med den aktuelle streng.
compareTo() metoden returnerer
- 0 – Returnerer nul, hvis det angivne objekt er lig med den aktuelle streng.
- < 0 – Returnerer et tal mindre end nul, hvis denne streng er mindre end det angivne objekt.
- > 0 – Returnerer et tal større end nul, hvis denne streng overstiger den angivne streng.
Eksempel:
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));
}
}
Forventet output:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Forklaring:
Det første resultat returnerer værdien nul, da den første og anden streng er ens.
Det andet resultat returnerer værdien 32, da tegnene er forskellige.
Bemærk: For at ignorere store og små bogstaver kan du bruge metoden "compareToIgnoreCase".
Metode 4: StringUtils equals() metode
Java StringUtils er lig med() metoden sammenligner ligheden mellem to sekvenser af tegn.
Sørg for at du har tilføjet biblioteket "org.apache.commons.lang3" i dit program. Dette giver dig mulighed for at sammenligne strenge ved hjælp af StringUtils-metoderne.
Brug dette til Maven-projekter vejlede at tilføje biblioteket til projektet.
Hvis du dog vil tilføje biblioteket uden byggeværktøjer, skal du bruge dette vejlede.
Syntaks:
public static boolean equals(CharSequence cs1, CharSequence cs2)
StringUtils equals() metodeparametre
- cs1 – En sekvens af tegn til det første argument.
- cs2 – En sekvens af tegn til det andet argument.
StringUtils equals() metode returnerer
- Returnerer sand, hvis strengsammenligningen er ens. Det gælder også, hvis du angiver en nullværdi i de to argumenter.
- Returnerer falsk, hvis strengsammenligningen ikke er ens.
Eksempel:
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)); } }
Output:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Forklaring:
Da indholdet af den første og anden streng er ens, returnerer resultatet sandt.
Du kan bruge metoden "equalsIgnoreCase" til at ignorere sagen.
Metode 5: StringUtils equalsAny() metode
Java StringUtils equalsAny() metoden kontrollerer, om der findes en streng i argumenterne.
Syntaks:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
StringUtils equalsAny() metodeparametre
- streng – strengværdien for det første argument. Argumentet kan også have en nulværdi.
- searchStrings – Et sæt strengargumenter for metoden til at finde, om den første argumentstreng er til stede.
StringUtils equalsAny() metode returnerer
- Returnerer sand, hvis den streng, der skal matches, findes i variablen antal søgestrenge. Dette gælder, hvis begge argumenter er null.
- Returnerer falsk, hvis den streng, der skal matches, ikke matcher nogen streng i det variable antal søgestrenge.
Eksempel:
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)); } }
Output:
is Guru99 available: true is GURU99 available: false
Forklaring:
Da indholdet af den første streng og den anden streng er ens, returnerer resultatet sandt. Du kan bruge metoden "equalsAnyIgnoreCase" til at ignorere sagen.
Metode 6: Brug af == operator
Operatoren == på strenge kontrollerer, om objektreferencer har samme adresse.
Eksempel:
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));
}
}
Forventet output:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Forklaring:
- Det første resultat returnerer en boolsk værdi på sand. Strenge med samme indhold tilføjes til den samme strengpulje, derfor deler strengene én adresse.
- Det andet resultat returnerer en boolsk værdi på falsk. Objekterne har forskelligt indhold, hvilket resulterer i forskellige strengpuljer. Det betyder, at strengene har separate objektreferencer; outputtet er derfor falsk.
Metode 7: Oprettelse af en brugerdefineret metode til at sammenligne to strenge i Java
Opret en metode, der sammenligner to strenge ved hjælp af leksikografisk rækkefølge.
Syntaks:
public static int compareTwoStrings(String str1, String str2)
Brugerdefinerede metodeparametre
- str1 – Strengen der skal sammenlignes.
- str2 – Den streng, der skal sammenlignes med.
Tilpasset metode returnerer
- 0 – Returnerer nul, hvis den første streng er lig med den anden streng.
- < 0 – Returnerer et tal mindre end nul, hvis den første streng er mindre end den anden streng.
- > 0 – Returnerer et tal større end nul, hvis den første streng er større end den anden streng.
Eksempel:
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));
}
}
Forventet output:
is Guru99 equal to Guru99: 0
Forklaring:
Resultatet returnerede en værdi på nul, hvilket betyder, at den brugerdefinerede funktion fungerer som forventet.
