Возникает типичная проблема при работе со строками в языке программирования 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.
Добавить комментарий