Сравнение двух строк в java - equals() и equalsIgnoreCase()

Первое, что приходит в голову, это сравнение с "==" но это в корне неверно. Когда я начинал программировать на Java, я сравнивал две строки с "==", который проверяет равенство объектов, но не между двумя строками, двумя символами. В отличие от C++,   Java-дизайнеры создали методы в классе String для упрощения языка, так как он является объектно-ориентированным.

Сравнение String с методом equals

Метод equals() класса class String проверяет равенство значений в java или содержимое переменной и возвращает true если обе строки содержат одинаковые символы. Вот пример:

String s1="str"; 
Строка s2="str";
if(s1.equals(s2))
System.out.println("Обе строки равны");
equals() чувствителен к регистру (нижний или верхний регистр):

String s1="str"; 
Строка s2="STR";
if(s1.equals(s2))
System.out.println("Обе строки равны");
В данном случае он возвращает false.

Игнорировать верхний регистр с equalsIgnoreCase()

Метод equalsIgnoreCase() избегает передачи строки из нижнего регистра в верхний регистр и сравнивает ее с equals(), Java предлагает метод equalsIgnoreCase(), который преобразует символы в нижний регистр и сравнивает две строки.
< br />
String s1="str"; 
Строка s2="STR";
if(s1.equalsIgnoreCase(s2))
System.out.println("Чувствительность к игнорируемому регистру. Две струны равны");

Size comparison

Класс String имеет метод length(), который возвращает длину строки:

if("string1".length()=="string2".length())
System.out.println("string1 и string2 равны по размеру");
else if("string1".length()>" string2".length())
System.out.println("string1 длиннее");
else
System.out.println("string2 длиннее");

В чем разница между equals и "=="

Метод equals() проверяет равенство значений.

new String("test").equals(new String("test"));//--> true
Оператор "==" проверяет равенство объектов, вот ряд ошибок, которых следует избегать:

String s1="trial"; 
String s2="trial";

//это один и тот же объект
s1==s2; --> false

//это не один и тот же объект
s1 == "test"; --> false

//Они ссылаются на один и тот же объект
"test" == "test"; --> true

//конкатенация рассматривается как единый объект
"test" == "ваш"+"t"; --> true

//метод substring() генерирует новый объект
"test" == "1test".substring(1); --> false

//метод replace() генерирует новый объект
"test" == "Test".replace("T", "t"); --> false
Конкатенация возвращает true, потому что она вызывается во время компиляции, в отличие от substring() и replace(), которые вызываются во время выполнения, и будет создан новый объект, который не равен другой части уравнения.