Со цел да ги споредите Стрингови за еднаквост, треба да ги користите String објектот equals
или equalsIgnoreCase
методи. Alsoе видиме и зошто не треба да ги користиме ==
оператор за споредување на жиците.
Ако треба да споредиме два жика во јава и исто така да се грижиме за обвивката на жиците, можеме да ги користиме equals()
метод
На пример, следната фрагмент ќе одреди дали двата инстанца на Стринг се еднакви на сите карактери, вклучувајќи ја и обвивката:
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');
}
} }
Излез:
first and second strings are equal
Забелешка:Втората изјава за печатење не се извршува бидејќи обвивката на firstString и thirdString не се совпаѓаат.Ако треба да споредиме два жика во java, но не се грижиме за обвивката на жиците, можеме да ги користиме equalsIgnoreCase()
метод
На пример, во горниот дел од кодот, ако ги замениме .equals()
со .equalsIgnoreCase()
метод, тогаш и двете изјави за печатење се извршуваат:
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');
}
} }
Излез:
first and second strings are equal
first and third string are equal
Поврзано:
Овие оператори всушност тестираат референци, и бидејќи повеќе String објекти можат да претставуваат иста низа, ова може да даде погрешен одговор.
Наместо тоа, користете String.equals(Object)
метод, кој ќе ги спореди String објектите врз основа на нивните вредности.
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');
}
} }
Излез:
first and second strings are equal
Забелешка:Втората изјава за печатење не се извршува.Кога споредувате низа со постојана вредност, може да ја ставите постојаната вредност на левата страна на еднакви за да се осигурате дека нема да добиете NullPointerException
ако другата низа е нула.
На пример:
'baz'.equals(foo)
Додека foo.equals('baz')
ќе фрли NullPointerException
ако foo е ништовен, 'baz'.equals(foo)
ќе оцени до false
.
Повеќе читлива алтернатива е да се користи Objects.equals()
, што прави нулта проверка на двата параметри:
на пр. Objects.equals(foo, 'baz')
.
Од Java 1.7, можно е да се спореди променлива на String со буквали во изјавата за прекинувач. Проверете дали Стрингот не е нула, во спротивно секогаш ќе фрла NullPointerException
. Вредностите се споредуваат користејќи String.equals
, т.е. чувствителни на букви.
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;
}
} }
Во овој пост објаснивме како да ги споредиме жиците во Java со примери со кодови. Кога обвивката на жиците е важна, треба да користиме .equals()
и кога обвивката не е важна, тогаш треба да користиме .equalsIgnoreCase()
.
Покрај тоа, не треба да ги користиме ==
оператор за споредување на жиците, како ==
операторот ја проверува референцата, а не вредноста.