Сравнение строк в Java: как сравнить строки и работать с методами equals() и compareTo()
В Java есть несколько способов сравнения строк.
1. Сравнение по ссылке:
Для проверки, указывают ли две ссылки на один и тот же объект (строку), используется оператор "==". Этот оператор проверяет, являются ли две ссылки указывающими на один и тот же объект. Например:
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
if (str1 == str2) {
System.out.println("str1 and str2 reference the same object");
}
if (str1 == str3) {
System.out.println("str1 and str3 reference the same object");
}
В результате выполнения этого кода выведется только первое сообщение, так как ссылки str1 и str2 указывают на одну и ту же строку, а str1 и str3 – на разные.
2. Сравнение по значению:
Для сравнения строк по значению в Java используется метод equals() или метод equalsIgnoreCase() для игнорирования регистра символов. Например:
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
if (str1.equals(str2)) {
System.out.println("str1 and str2 are equal by value");
}
if (str1.equals(str3)) {
System.out.println("str1 and str3 are equal by value");
}
В результате выполнения этого кода будут выведены оба сообщения, потому что содержимое строк str1 и str2 идентично, а содержимое строк str1 и str3 – тоже.
3. Сравнение с учетом порядка символов:
Для сравнения строк с учетом порядка символов используется метод compareTo(). Если первая строка "меньше" второй строки, метод возвращает значение меньше нуля. Если первая строка "больше" второй строки, метод возвращает значение больше нуля. Если строки равны, метод возвращает ноль. Например:
String str1 = "apple";
String str2 = "banana";
int result = str1.compareTo(str2);
if (result < 0) {
System.out.println("str1 is less than str2");
} else if (result > 0) {
System.out.println("str1 is greater than str2");
} else {
System.out.println("str1 and str2 are equal");
}
В результате выполнения этого кода будет выведено сообщение "str1 is less than str2", потому что строка "apple" меньше строки "banana" по алфавиту.
4. Сравнение с игнорированием регистра символов:
Для сравнения строк с игнорированием регистра символов используется метод compareToIgnoreCase(). Его использование аналогично методу compareTo(). Например:
String str1 = "APPLE";
String str2 = "banana";
int result = str1.compareToIgnoreCase(str2);
if (result < 0) {
System.out.println("str1 is less than str2");
} else if (result > 0) {
System.out.println("str1 is greater than str2");
} else {
System.out.println("str1 and str2 are equal");
}
В результате выполнения этого кода также будет выведено сообщение "str1 is less than str2", потому что строка "APPLE" меньше строки "banana" по алфавиту вне зависимости от регистра символов.
Примеры:
1. Сравнение строк по ссылке.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
if (str1 == str2) {
System.out.println("str1 and str2 reference the same object");
}
if (str1 == str3) {
System.out.println("str1 and str3 reference the same object");
}
2. Сравнение строк по значению.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
if (str1.equals(str2)) {
System.out.println("str1 and str2 are equal by value");
}
if (str1.equals(str3)) {
System.out.println("str1 and str3 are equal by value");
}
3. Сравнение с учетом порядка символов.
String str1 = "apple";
String str2 = "banana";
int result = str1.compareTo(str2);
if (result < 0) {
System.out.println("str1 is less than str2");
} else if (result > 0) {
System.out.println("str1 is greater than str2");
} else {
System.out.println("str1 and str2 are equal");
}
4. Сравнение с игнорированием регистра символов.
String str1 = "APPLE";
String str2 = "banana";
int result = str1.compareToIgnoreCase(str2);
if (result < 0) {
System.out.println("str1 is less than str2");
} else if (result > 0) {
System.out.println("str1 is greater than str2");
} else {
System.out.println("str1 and str2 are equal");
}