Java "abc" == "abc" операция

Когда мы делаем:

String a = new String("abc");
String b = new String ("abc");

и сделать a == b он возвращает false, потому что это 2 разных объекта.
Но когда у нас есть это:

String c = "abc";
String d = "abc";

и мы делаем c == d это возвращает истину. Это почему? Должен ли он также вернуть ложь? Почему оператор == ведет себя как метод.equals() в этом случае?

1 ответ

Это происходит потому, что Java использует так называемый Stringpool и пытается повторно использовать старые строковые литералы для экономии памяти. Но если вы говорите "новая строка", вы всегда создаете новый объект на основе литерала. Смотрите: здесь я бы предложил вам всегда использовать Objects.equals (a, b), если вы хотите убедиться, что объекты равны (или вызвать равным для самого объекта, если вы уверены, что он не равен нулю)

Другие вопросы по тегам