Om Strings vir gelykheid te vergelyk, moet u die String-voorwerp se equals
gebruik of equalsIgnoreCase
metodes. Ons sal ook sien waarom ons nie die ==
moet gebruik nie operateur om snare te vergelyk.
As ons twee snare in java moet vergelyk en ook omgee vir die omhulsel van die snare, kan ons die equals()
metode.
Die volgende fragment sal byvoorbeeld bepaal of die twee gevalle van String gelyk is aan alle karakters, insluitend omhulsel:
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');
}
} }
Uitset:
first and second strings are equal
Nota:Die tweede drukverklaring word nie uitgevoer nie omdat die omhulsel van firstString en thirdString nie ooreenstem nie.As ons twee snare in Java moet vergelyk, maar nie omgee vir die omhulsel van die snare nie, kan ons die equalsIgnoreCase()
metode.
Byvoorbeeld, in die bostaande kode, as ons .equals()
vervang het met .equalsIgnoreCase()
metode, dan word albei drukstate uitgevoer:
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');
}
} }
Uitset:
first and second strings are equal
first and third string are equal
Verwante:
Hierdie operators toets eintlik verwysings, en aangesien verskeie String-voorwerpe dieselfde String kan voorstel, kan dit die verkeerde antwoord gee.
Gebruik eerder die String.equals(Object)
metode, wat die String-voorwerpe op grond van hul waardes sal vergelyk.
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');
}
} }
Uitset:
first and second strings are equal
Nota:Die tweede drukverklaring word nie uitgevoer nie.As u 'n string met 'n konstante waarde vergelyk, kan u die konstante waarde aan die linkerkant van gelyke plaas om te verseker dat u geen NullPointerException
as die ander string nul is.
Byvoorbeeld:
'baz'.equals(foo)
Terwyl foo.equals('baz')
sal 'n NullPointerException
gooi as foo nul is, 'baz'.equals(foo)
sal evalueer tot false
.
'N Leesbaarder alternatief is om Objects.equals()
te gebruik, wat op beide parameters 'n nulkontrole doen:
bv. Objects.equals(foo, 'baz')
.
Met betrekking tot Java 1.7 is dit moontlik om 'n String-veranderlike met literale in 'n skakelverklaring te vergelyk. Maak seker dat die string nie nul is nie, anders gooi dit altyd 'n NullPointerException
Waardes word vergelyk met behulp van String.equals
, dws hooflettergevoelig.
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;
}
} }
In hierdie pos het ons verduidelik hoe om snare in java met kode-voorbeelde te vergelyk. As omhulsel van die snare belangrik is, moet ons .equals()
gebruik en as omhulsel nie belangrik is nie, moet ons .equalsIgnoreCase()
gebruik.
Verder moet ons nie die ==
gebruik nie operateur om snare te vergelyk, as die ==
operateur die verwysing en nie die waarde nie.