Главная / Веб-программирование / Сравнение строк в Java

Сравнение строк в Java

Класс String содержит ряд методов для Java сравнения строк. Ниже приведены некоторые из наиболее часто используемых:

  • Оператор ==;
  • Метод equals();
  • equalsIgnoreCase;
  • Метод compareTo().

Использование оператора ==

Оператор == проверяет ссылки, а не значения. Это означает, что он проверяет, являются ли сравниваемые элементы одним и тем же объектом. Если две переменные String указывают на один и тот же объект в памяти, сравнение возвращает true. В противном случае — false:

"Java" == "Java" //true

Здесь литералы интернируются компилятором и таким образом ссылаются на один и тот же объект:

new String("Java") == "Java" // false

Приведенные выше переменные String указывают на разные объекты:

new String("Java") == new String("Java") // false

Приведенные выше переменные String также указывают на разные объекты.

Оператор ‘==’ не сравнивает две строки Java, а только ссылки, на которые они строки.

Пример

class TestClass{
public static void main (String[] args){
// ссылается на один и тот же объект, возвращает true
if( "Java" == "Java" ){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
// указывает на другой объект, возвращает false
if(new String("Java") == "Java"){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
// указывает на другой объект, возвращает false
if(new String("Java") == new String("Java") ){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
}
}

Результат

Statement is true
Statement is false
Statement is false

Метод String equals()

В Java сравнение строк equals проверяет исходное содержимое строки. Он возвращает true, если параметр — это объект String, который представляет собой ту же строку символов, что и объект:

Objects.equals("Java", new String("Java")) //true

Если нужно проверить, имеют ли две строки одинаковое значение, можно использовать Objects.equals().

Пример

class TestClass{
public static void main (String[] args) {
String str1 = "Java";
String str2 = "Java";
String str3 = "ASP";
String str4 = "JAVA";
String str5 = new String("Java");
// оба равны, возвращают true
if(str1.equals(str2)){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
// оба не равны, возвращают false
if(str1.equals(str3)){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
// оба не равны, возвращают false
if(str1.equals(str4)){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
// оба равны, возвращают true
if(str1.equals(str5)){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
}
}

Результат

Statement is true
Statement is false
Statement is false
Statement is true

String equalsIgnoreCase

Метод equalsIgnoreCase() осуществляет Java сравнение строк лексикографически, игнорируя различия регистра. Значение true возвращается только тогда, когда аргумент является объектом String, который представляет ту же последовательность символов, что и объект. Если нужно проверить строки на равенство без учета регистра, лучше использовать метод equalsIgnoreCase класса String.

Пример

class TestClass{
public static void main (String[] args){
String str1 = "Java";
String str2 = "JAVA";
// возвращает true, потому что оба равны без учета регистра
if(str1.equalsIgnoreCase(str2)){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
// возвращает false при чувствительности к регистру
if(str1.equals(str2)){
System.out.println("Statement is true");
}else{
System.out.println("Statement is false");
}
}
}

<b>Результат</b>

Statement is true
Statement is false

Метод String compareTo()

Метод compareTo() используется, когда нужно определить порядок строк лексикографически. Он сравнивает значения char аналогично методу equals(). Если две строки точно совпадают, метод compareTo() вернет значение 0 (результат = 0). При сравнении двух строк Java он возвращает положительное (результат > 0) целое число, если первый объект String следует за второй строкой. Метод compareTo() возвращает отрицательный результат (результат < 0), если первый объект String предшествует второй строке:

result1 == result2 :возвращает 0;
result1 > result2 :возвращает положительное значение;
result1 < result2 : возвращает отрицательное значение.

Пример

class TestClass{
public static void main (String[] args) {
String str1 = "Java";
String str2 = "Java";
String str3 = "ASP";
int val = 0;
val = str1.compareTo(str2);
System.out.println(val);
val = str1.compareTo(str3);
System.out.println(val);
val = str3.compareTo(str1);
System.out.println(val);
}
}

Результат

0
9
-9

Перевод статьи «String Comparison in Java» дружной командой проекта Сайтостроение от А до Я.

О нас seoexpert

продвижение сайта,seo оптимизация,поисковое продвижение,раскрутка сайтов,поисковая оптимизация,продвижение сайта в гугл,seo раскрутка,продвижение сайтов в яндексе,продвижение сайта в google,продвижение сайтов в топ 10,Оптимизация и продвижение сайтов,услуги продвижения сайта,заказать продвижение,продвижение сайтов в топ,сео раскрутка сайта

Смотрите также

Определение типа данных double в C, C++ и C#

Double – 64-разрядная переменная с плавающей запятой Тип double — это основной тип данных, который ...