Menu
Coddy logo textTech

String Comparison

Часть раздела Основы путешествия по Java на Coddy — урок 70 из 73.

В Java сравнение строк не так просто, как сравнение примитивных типов данных, таких как целые числа или символы. Вы не можете использовать оператор == для сравнения строк на равенство, потому что строки являются объектами, и == будет сравнивать их адреса в памяти, а не их содержимое. Вместо этого вам нужно использовать специальные методы, предоставленные классом String, для сравнения фактических символов внутри строк.

Вот основные методы сравнения строк:

  • equals(Object other): Сравнивает строку с другим объектом (обычно другой строкой). Возвращает true, если строки имеют одинаковые символы в том же порядке, false в противном случае. Этот метод чувствителен к регистру.
  • equalsIgnoreCase(String other): Аналогично equals, но игнорирует регистр. Возвращает true, если строки имеют одинаковые символы независимо от их регистра, false в противном случае.
  • compareTo(String other): Сравнивает две строки лексикографически (на основе их значений Unicode). Возвращает 0, если строки равны, отрицательное число, если первая строка меньше второй, и положительное число, если первая строка больше второй. Этот метод чувствителен к регистру.
  • compareToIgnoreCase(String other): Аналогично compareTo, но игнорирует регистр.

Вот пример:

String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";

boolean eq1 = str1.equals(str2); // true
boolean eq2 = str1.equals(str3); // false
boolean eq3 = str1.equalsIgnoreCase(str3); // true

int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // negative value
int cmp3 = str4.compareTo(str1); // positive value
int cmp4 = str1.compareToIgnoreCase(str3); // 0
challenge icon

Задание

Легко

Создайте метод с именем compareStrings, который принимает две строки в качестве входных данных и выполняет следующие сравнения:

  1. Проверяет, равны ли две строки, используя equals, и выводит результат.
  2. Проверяет, равны ли две строки (игнорируя регистр), используя equalsIgnoreCase, и выводит результат.
  3. Сравнивает две строки, используя compareTo, и выводит результат.
  4. Сравнивает две строки (игнорируя регистр), используя compareToIgnoreCase, и выводит результат.

Пример вывода для входных строк HELLO и hello:

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

Шпаргалка

В Java используйте специальные методы для сравнения строк, а не оператор ==, который сравнивает адреса памяти:

  • equals(Object other): Сравнение на равенство с учетом регистра
  • equalsIgnoreCase(String other): Сравнение на равенство без учета регистра
  • compareTo(String other): Лексикографическое сравнение с учетом регистра (возвращает 0 если равны, отрицательное если первое < второе, положительное если первое > второе)
  • compareToIgnoreCase(String other): Лексикографическое сравнение без учета регистра
String str1 = "hello";
String str2 = "HELLO";

boolean eq1 = str1.equals(str2); // false
boolean eq2 = str1.equalsIgnoreCase(str2); // true

int cmp1 = str1.compareTo(str2); // positive value
int cmp2 = str1.compareToIgnoreCase(str2); // 0

Попробуйте сами

import java.util.Scanner;

public class Main {
    public static void compareStrings(String str1, String str2) {
        // Напишите свой код здесь
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        compareStrings(str1, str2);
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы