Возникает типичная проблема при работе со строками в языке программирования Java. Вот пример:
String str1 = "Привет";
String str2 = "Привет";
if (str1 == str2) {
System.out.println("Строки равны");
} else {
System.out.println("Строки не равны");
}
Код выше выведет «Строки равны», потому что в этом случае сравниваются две строки-литерала. Однако если строки были бы получены другим способом, например, через ввод пользователя или чтение из файла, то результат мог бы быть другим.
String str1 = new String("Привет");
String str2 = new String("Привет");
if (str1 == str2) {
System.out.println("Строки равны");
} else {
System.out.println("Строки не равны");
}
В этом случае код выведет «Строки не равны». Это происходит потому что оператор == сравнивает не сами строки, а ссылки на них. Во втором примере создаются два разных объекта класса String, поэтому ссылки на них будут разными.
Чтобы корректно сравнивать содержимое строк в Java, нужно использовать метод equals(). Этот метод сравнивает символы внутри строк, а не ссылки на них.
String str1 = new String("Привет");
String str2 = new String("Привет");
if (str1.equals(str2)) {
System.out.println("Строки равны");
} else {
System.out.println("Строки не равны");
}
Теперь код выведет «Строки равны», так как сравнивается содержимое строк, а не ссылки на них. Это правило следует запомнить и всегда использовать метод equals() для сравнения строк в Java.
Перейти в телеграм, чтобы получить результаты теста



Забрать
Добавить комментарий