Проверяет понимание разницы между сравнением строк по ссылке и по содержимому в Java, что критично для избежания логических ошибок.
В Java строки являются объектами, поэтому оператор == проверяет, указывают ли переменные на один и тот же объект в памяти, а не на одинаковое содержимое. Для сравнения содержимого строк используется метод equals(), который переопределен в классе String.
String a = new String("hello");
String b = new String("hello");
System.out.println(a == b); // false, разные объекты
System.out.println(a.equals(b)); // true, одинаковое содержимое
String c = "hello";
String d = "hello";
System.out.println(c == d); // true, интернирование строкЧтобы избежать NullPointerException, используйте Objects.equals() или вызывайте equals() на известной не-null строке:
String input = null;
if ("expected".equals(input)) { // безопасно
// ...
}
// или
if (Objects.equals(input, "expected")) {
// ...
}Всегда используйте equals() или Objects.equals() для сравнения содержимого строк в Java, чтобы избежать ошибок, связанных с ссылочным сравнением и null-значениями.