Сравнение двух строк в java - equals() и equalsIgnoreCase()
Первое, что приходит в голову, это сравнение с "==" но это в корне неверно. Когда я начинал программировать на Java, я сравнивал две строки с "==", который проверяет равенство объектов, но не между двумя строками, двумя символами. В отличие от C++, Java-дизайнеры создали методы в классе String для упрощения языка, так как он является объектно-ориентированным.Сравнение String с методом equals
Метод equals() класса class String проверяет равенство значений в java или содержимое переменной и возвращает true если обе строки содержат одинаковые символы. Вот пример:
String s1="str";equals() чувствителен к регистру (нижний или верхний регистр):
Строка s2="str";
if(s1.equals(s2))
System.out.println("Обе строки равны");
String s1="str";В данном случае он возвращает false.
Строка s2="STR";
if(s1.equals(s2))
System.out.println("Обе строки равны");
Игнорировать верхний регистр с equalsIgnoreCase()
Метод equalsIgnoreCase() избегает передачи строки из нижнего регистра в верхний регистр и сравнивает ее с equals(), Java предлагает метод equalsIgnoreCase(), который преобразует символы в нижний регистр и сравнивает две строки.
< br />
< 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";Конкатенация возвращает true, потому что она вызывается во время компиляции, в отличие от substring() и replace(), которые вызываются во время выполнения, и будет создан новый объект, который не равен другой части уравнения.
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