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), если вы хотите убедиться, что объекты равны (или вызвать равным для самого объекта, если вы уверены, что он не равен нулю)