Kaip palyginti „Java“ eilutes

Norėdami palyginti „Strings for lygybę“, turėtumėte naudoti „String“ objektą equals arba equalsIgnoreCase metodai. Taip pat pamatysime, kodėl neturėtume naudoti == operatorius palyginti eilutes.



Stygų palyginimas su lygiu () metodu

Jei mums reikia palyginti dvi „Java“ eilutes ir rūpintis stygų apvalkalu, galime naudoti equals() metodas.

Pvz., Šis fragmentas nustatys, ar du eilutės egzemplioriai yra vienodi visiems simboliams, įskaitant didžiųjų raidžių:


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');
}
} }

Išvestis:

first and second strings are equal Pastaba:Antrasis atspausdintas sakinys nevykdomas, nes „firstString“ ir „thirdString“ didžiosios raidės nesutampa.

Stygų palyginimas su „equalsIgnoreCase ()“ metodu

Jei mums reikia palyginti dvi „Java“ eilutes, bet nerūpi stygų korpusas, galime naudoti equalsIgnoreCase() metodas.


Pvz., Anksčiau pateiktame kodo fragmente, jei pakeitėme .equals() su .equalsIgnoreCase() metodas, tada bus vykdomi abu spausdinimo teiginiai:

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');
}
} }

Išvestis:

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

Susijęs:



Nenaudokite operatoriaus ==, kad palygintumėte stygas

Pastaba:Lygindami dvi java eilutes, neturėtume naudoti == arba ! = operatoriai.

Šie operatoriai iš tikrųjų tikrina nuorodas ir kadangi keli eilutės objektai gali atstovauti tą pačią eilutę, tai gali pateikti neteisingą atsakymą.


Vietoj to naudokite String.equals(Object) metodas, kuris palygins String objektus pagal jų vertes.

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');
}
} }

Išvestis:

first and second strings are equal Pastaba:Antrasis atspausdintas sakinys nevykdomas.

Styginių palyginimas su pastoviomis vertybėmis

Lygindami eilutę su pastovia verte, pastoviąją vertę galite uždėti kairėje lygių pusėje, kad užtikrintumėte, jog negausite NullPointerException jei kita eilutė yra nulinė.

Pavyzdžiui:


'baz'.equals(foo)

Nors foo.equals('baz') metės NullPointerException jei foo yra nulinis, 'baz'.equals(foo) įvertins false.

Skaitytesnė alternatyva yra naudoti Objects.equals(), kuris abiejų parametrų patikrinimą atlieka visiškai:

pvz. Objects.equals(foo, 'baz').



Styginių palyginimas jungiklio teiginyje

Nuo „Java 1.7“ jungiklio sakinyje galima palyginti „String“ kintamąjį su literalais. Įsitikinkite, kad eilutė nėra nulinė, kitaip ji visada išmes NullPointerException. Vertės lyginamos naudojant String.equals, t. Y. Didžiosios ir mažosios raidės.


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;
}
} }

Išvada

Šiame įraše mes paaiškinome, kaip palyginti eilutes „Java“ su kodų pavyzdžiais. Kai styginių korpusai yra svarbūs, turėtume naudoti .equals() o kai apvalkalas nėra svarbus, tada turėtume naudoti .equalsIgnoreCase()

Be to, neturėtume naudoti == operatorius palyginti eilutes, nes == operatorius tikrina nuorodą, o ne vertę.