Hvernig á að bera saman strengi á Java

Til að bera saman strengi til jafnréttis ættir þú að nota strengjahlutinn equals eða equalsIgnoreCase aðferðir. Við munum líka sjá hvers vegna við ættum ekki að nota == rekstraraðili til að bera saman strengi.

Að bera saman strengi við jafna () aðferð

Ef við þurfum að bera saman tvo strengi í java og líka að hugsa um hlíf strengjanna getum við notað equals() aðferð.

Til dæmis, eftirfarandi bútur mun ákvarða hvort tvö dæmi String eru jöfn á alla stafi, þar með talið hlíf:

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

Framleiðsla:

first and second strings are equal Athugið:Önnur prentyfirlýsingin verður ekki keyrð vegna þess að hlífin á firstString og thirdString passa ekki saman.

Samanburður á strengjum við jafna IgnoreCase () aðferð

Ef við þurfum að bera saman tvo strengi í java en er ekki sama um hlíf strengjanna getum við notað equalsIgnoreCase() aðferð.

Til dæmis í kóðabrotinu hér að ofan, ef við skiptum um .equals() með .equalsIgnoreCase() aðferð, þá verða báðar prentayfirlýsingar framkvæmdar:



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

Framleiðsla:

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

Tengt:

Ekki nota stjórnandann == til að bera saman strengi

Athugið:Þegar við berum saman tvo strengi í java ættum við ekki að nota == eða ! = rekstraraðilar.

Þessir rekstraraðilar prófa í raun tilvísanir og þar sem margir strengjahlutir geta táknað sömu strenginn er þetta til þess fallið að gefa rangt svar.

Notaðu í staðinn String.equals(Object) aðferð, sem mun bera saman strengjahlutina út frá gildum þeirra.

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

Framleiðsla:

first and second strings are equal Athugið:Önnur prentyfirlýsingin verður ekki framkvæmd.

Að bera saman strengi við stöðug gildi

Þegar þú berð saman streng við stöðugt gildi, getur þú sett stöðugt gildi vinstra megin við jafna til að tryggja að þú fáir ekki NullPointerException ef önnur strengurinn er enginn.

Til dæmis:

'baz'.equals(foo)

Meðan foo.equals('baz') mun henda NullPointerException ef foo er núll, 'baz'.equals(foo) mun meta til false.

Læsilegra val er að nota Objects.equals() sem gerir núllskoðun á báðum breytum:

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

Samanburður á strengjum í rofayfirlýsingu

Frá og með Java 1.7 er mögulegt að bera saman strengjabreytu við bókstaf í skiptisetningu. Gakktu úr skugga um að strengurinn sé ekki núll, annars kastar hann alltaf NullPointerException Gildi eru borin saman með String.equals, þ.e.a.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;
}
} }

Niðurstaða

Í þessari færslu útskýrðum við hvernig á að bera saman strengi í java við kóða dæmi. Þegar hlíf strenganna skiptir máli ættum við að nota .equals() og þegar hlíf er ekki mikilvægt, þá ættum við að nota .equalsIgnoreCase()

Þar að auki ættum við ekki að nota == stjórnandi til að bera saman strengi, sem == rekstraraðili athugar tilvísunina en ekki gildi.