Hur man jämför två strängar i Java
⚡ Smart sammanfattning
Jämförelse av två strängar i Java kan göras med flera metoder som matchar en sekvens av tecken för likhet eller ordning. Den här resursen förklarar sju metoder, inklusive String equals, Objects equals, compareTo, StringUtils-metoder, operatorn == och en anpassad jämförelsemetod, var och en med exempel.
Metoder för att jämföra strängar i Java
Java ger olika metoder som du kan använda för att jämföra två strängar i Java. Strängjämförelse i Java är en funktion som matchar en sekvens av tecken till en sträng.
För att lära dig hur man jämför strängar i Java, kan du använda metoderna som tillhandahålls av följande klasser:
- Strängklass från java.lang-paketet.
- Objektklassen från java.util-paketet.
- StringUtils-klassen från org.apache.commons.lang3-paketet.
De flesta av dessa Java Metoder för jämförelse av strängar har lösningar för att ignorera gemener och skiftläge. I den här handledningen lär du dig de olika metoder du kan använda för att jämföra två strängar.
Metod 1: String equals()-metoden
Ocuco-landskapet Java Sträng metoden equals(). jämför två strängobjekt för lika strängvärden.
Syntax:
public boolean equals(Object anObject)
equals() metodparametrar:
anObject – Argumentsträngen för att jämföra strängar.
return typer av metoden equals().
- Returnerar sant om den angivna strängen är densamma som den första strängen.
- Returnerar false om den första strängen inte är densamma som argumentsträngen.
Exempel:
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));
}
}
Förväntad produktion:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Förklaring:
- Du fick false i den senaste utgången eftersom det angivna objektet har ett annat skiftläge.
Obs: Använd metoden string equals() för skiftlägeskänslig strängjämförelse. Använd metoden ”equalsIgnoreCase” för att jämföra strängobjekt utan att skiftläge används.
Metod 2: Metoden Objects equals()
Ocuco-landskapet Java Objekt är lika med() metod jämför två strängobjekt för att hitta om de har samma värden.
Syntax:
public static boolean equals(Object a, Object b)
equals() metodparametrar
a – Argumentsträng för det första strängobjektet.
b – Argumentsträng för det andra strängobjektet.
return typer av metoden equals().
- Returnerar sant om strängliteralerna är lika. Om du skickar ett nollvärde i de två argumenten returneras också sant.
- Returnerar falskt om strängliteralerna inte är lika.
Exempel:
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)); } }
Produktion:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Förklaring:
Från det här exemplet kan du se att utdata är ett booleskt värde på sant, eftersom de jämförda strängarna är lika.
Metod 3: String compareTo()-metoden
Ocuco-landskapet Java String compareTo() metoden jämför två strängar i alfabetisk ordning. Det brukar kallas lexikografisk ordning.
Syntax:
public int compareTo(String str)
compareTo() metodparametrar
str – Strängen som ska jämföras med den aktuella strängen.
compareTo()-metoden returnerar
- 0 – Returnerar noll om det angivna objektet är lika med den aktuella strängen.
- < 0 – Returnerar ett tal mindre än noll om denna sträng är mindre än det angivna objektet.
- > 0 – Returnerar ett tal större än noll om denna sträng överskrider den angivna strängen.
Exempel:
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));
}
}
Förväntad produktion:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Förklaring:
Det första resultatet returnerar värdet noll, eftersom den första och andra strängen är lika.
Det andra resultatet returnerar värdet trettiotvå, eftersom tecknen är olika.
Obs: För att ignorera skiftläge kan du använda metoden "compareToIgnoreCase".
Metod 4: StringUtils equals() metod
Ocuco-landskapet Java StringUtils är lika med() metoden jämför likheten mellan två teckensekvenser.
Se till att du har lagt till biblioteket ”org.apache.commons.lang3” i ditt program. Detta gör att du kan jämföra strängar med hjälp av StringUtils-metoderna.
För Maven-projekt, använd detta styra för att lägga till biblioteket i projektet.
Om du däremot vill lägga till biblioteket utan några byggverktyg, använd detta styra.
Syntax:
public static boolean equals(CharSequence cs1, CharSequence cs2)
StringUtils equals() metodparametrar
- cs1 – En sekvens av tecken för det första argumentet.
- cs2 – En sekvens av tecken för det andra argumentet.
StringUtils equals()-metoden returnerar
- Returnerar sant om strängjämförelsen är lika. Det gäller även om du skickar ett nullvärde i de två argumenten.
- Returnerar falskt om strängjämförelsen inte är lika.
Exempel:
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)); } }
Produktion:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Förklaring:
Eftersom innehållet i den första och andra strängen är lika, returnerar resultatet sant.
Du kan använda metoden "equalsIgnoreCase" för att ignorera fallet.
Metod 5: StringUtils equalsAny() metod
Ocuco-landskapet Java StringUtils equalsAny() metod kontrollerar om det finns en sträng i argumenten.
Syntax:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
StringUtils equalsAny() metodparametrar
- string – Strängvärdet för det första argumentet. Argumentet kan också ha ett nollvärde.
- searchStrings – En uppsättning strängargument för metoden för att hitta om den första argumentsträngen finns.
StringUtils equalsAny()-metoden returnerar
- Returnerar sant om strängen som ska matchas finns i variabeln antal söksträngar. Detta gäller om båda argumenten är null.
- Returnerar false om strängen som ska matchas inte matchar någon sträng i det variabla antalet söksträngar.
Exempel:
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)); } }
Produktion:
is Guru99 available: true is GURU99 available: false
Förklaring:
Eftersom innehållet i den första strängen och den andra strängen är lika, returnerar resultatet sant. Du kan använda metoden "equalsAnyIgnoreCase" för att ignorera fallet.
Metod 6: Använd operatorn ==
Operatorn == på strängar kontrollerar om objektreferenser har samma adress.
Exempel:
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));
}
}
Förväntad produktion:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Förklaring:
- Det första resultatet returnerar ett booleskt värde på sant. Strängar med samma innehåll läggs till i samma strängpool, vilket innebär att strängarna delar en adress.
- Det andra resultatet returnerar ett booleskt värde på falskt. Objekten har olika innehåll, vilket resulterar i olika strängpooler. Detta innebär att strängarna har separata objektreferenser; därmed är utdata falskt.
Metod 7: Skapa en anpassad metod för att jämföra två strängar i Java
Skapa en metod som jämför två strängar med hjälp av lexikografisk ordning.
Syntax:
public static int compareTwoStrings(String str1, String str2)
Anpassade metodparametrar
- str1 – Strängen att jämföra.
- str2 – Strängen att jämföra mot.
Anpassad metod returnerar
- 0 – Returnerar noll om den första strängen är lika med den andra strängen.
- < 0 – Returnerar ett tal mindre än noll om den första strängen är mindre än den andra strängen.
- > 0 – Returnerar ett tal större än noll om den första strängen är större än den andra strängen.
Exempel:
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));
}
}
Förväntad produktion:
is Guru99 equal to Guru99: 0
Förklaring:
Resultatet returnerade värdet noll, vilket betyder att den anpassade funktionen fungerar som förväntat.

