Avatar ·

Разница между == и === в Java

Всем привет! Никак не могу разобраться с операторами сравнения в Java. Знаю, что в JavaScript есть строгое сравнение через ===, но в Java такой оператор, похоже, отсутствует. При попытке написать === компилятор выдаёт ошибку.

Пробовал использовать == для сравнения строк, но получаю неожиданные результаты. Например, вот такой код:

String a = new String("test");
String b = new String("test");
System.out.println(a == b); // false
System.out.println(a.equals(b)); // true

Почему == возвращает false, если строки одинаковые? Я ожидал, что == будет сравнивать содержимое, как в JavaScript. Почитал документацию — в Java == сравнивает ссылки на объекты, а не их значения. Для строк нужно использовать equals().

Но тогда вопрос: есть ли в Java аналог строгого сравнения === из JavaScript? Или единственный способ сравнивать объекты по значению — это метод equals()? Как правильно сравнивать примитивы (int, double) и объекты? Заранее спасибо за разъяснения!