Hur man jämför strängar i Java

För att jämföra strängar för jämlikhet bör du använda strängobjektets equals eller equalsIgnoreCase metoder. Vi kommer också att se varför vi inte ska använda == för att jämföra strängar.



Jämföra strängar med lika () -metod

Om vi ​​behöver jämföra två strängar i java och också bry oss om strängens hölje kan vi använda equals() metod.

Följande utdrag kommer till exempel att avgöra om de två instanserna av String är lika för alla tecken inklusive hölje:


public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test' + 123;
String thirdString = 'TEST123';

if (firstString.equals(secondString)) {

System.out.println('first and second strings are equal');
}

if (firstString.equals(thirdString)) {

System.out.println('first and third string are equal');
}
} }

Produktion:

first and second strings are equal Notera:Det andra utskriftsuttalandet körs inte eftersom höljet för firstString och thirdString inte matchar.

Jämföra strängar med equalsIgnoreCase () -metod

Om vi ​​behöver jämföra två strängar i java men inte bryr oss om strängarnas hölje kan vi använda equalsIgnoreCase() metod.


Till exempel i kodavsnittet ovan, om vi ersatte .equals() med .equalsIgnoreCase() metod, då körs båda utskriftsuttalanden:

public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test' + 123;
String thirdString = 'TEST123';

if (firstString.equalsIgnoreCase(secondString)) {

System.out.println('first and second strings are equal');
}

if (firstString.equalsIgnoreCase(thirdString)) {

System.out.println('first and third string are equal');
}
} }

Produktion:

first and second strings are equal
first and third string are equal

Relaterad:



Använd inte == -operatören för att jämföra strängar

Notera:När vi jämför två strängar i java ska vi inte använda == eller ! = operatörer.

Dessa operatörer testar faktiskt referenser, och eftersom flera strängobjekt kan representera samma sträng kan detta ge fel svar.


Använd istället String.equals(Object) metod, som jämför strängobjekten baserat på deras värden.

public class CompareTwoStrings {
public static void main(String[] args) {
String firstString = 'Test123';
String secondString = 'Test123';
String thirdString = new String('Test123');

if (firstString == secondString) {

System.out.println('first and second strings are equal');
}

if (firstString == thirdString) {

System.out.println('first and third strings are equal');
}
} }

Produktion:

first and second strings are equal Notera:Det andra utskriftsuttalandet körs inte.

Jämföra strängar med konstanta värden

När du jämför en sträng med ett konstant värde kan du placera det konstanta värdet till vänster om lika för att säkerställa att du inte får ett NullPointerException om den andra strängen är noll.

Till exempel:


'baz'.equals(foo)

Medan foo.equals('baz') kommer att kasta ett NullPointerException om foo är noll, 'baz'.equals(foo) utvärderas till false.

Ett mer läsbart alternativ är att använda Objects.equals(), som gör en nollkontroll på båda parametrarna:

t.ex. Objects.equals(foo, 'baz').



Jämföra strängar i ett switchuttalande

Från och med Java 1.7 är det möjligt att jämföra en strängvariabel med bokstäver i ett switch-uttalande. Se till att strängen inte är null, annars kastar den alltid ett NullPointerException. Värden jämförs med String.equals, dvs. skiftlägeskänslig.


public class CompareTwoStrings {
public static void main(String[] args) {
String stringToSwitch = 'A';


switch (stringToSwitch) {

case 'a':


System.out.println('a');


break;




case 'A':


System.out.println('A'); //the code goes here


break;




case 'B':


System.out.println('B');


break;




default:


break;
}
} }

Slutsats

I det här inlägget förklarade vi hur man jämför strängar i java med kodexempel. När höljet på strängarna är viktigt bör vi använda .equals() och när höljet inte är viktigt, ska vi använda .equalsIgnoreCase().

Dessutom bör vi inte använda == för att jämföra strängar, som == operatören kontrollerar referensen och inte värdet.