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Задание
ЛегкоСоздайте метод с именем compareStrings, который принимает две строки в качестве входных данных и выполняет следующие сравнения:
- Проверяет, равны ли две строки, используя
equals, и выводит результат. - Проверяет, равны ли две строки (игнорируя регистр), используя
equalsIgnoreCase, и выводит результат. - Сравнивает две строки, используя
compareTo, и выводит результат. - Сравнивает две строки (игнорируя регистр), используя
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);
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Operators Part 1
Arithmetic OperatorsModulo OperatorIncrement/DecrementPost Increment/DecrementArithmetic ShortcutsComparison OperatorsString Comparison5Operators Part 2
Logical Operators Part 1Logical Operators Part 2Recap - Simple LogicLogical Operators Part 3Logical Operators Part 43Variables Part 2
ConstantsNaming ConventionsRecap - Initialize VariablesType Casting Part 1Type Casting Part 26Decision Making
If StatementIf - ElseSwitch StatementTernary OperatorRecap - If ElseNested If - Else