Како да се споредат жиците во Јава

Со цел да ги споредите Стрингови за еднаквост, треба да ги користите 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 не се совпаѓаат.

Споредување на жиците со методот equalsIgnoreCase ()

Ако треба да споредиме два жика во 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().

Покрај тоа, не треба да ги користиме == оператор за споредување на жиците, како == операторот ја проверува референцата, а не вредноста.