Строка s = новая строка («xyz»). Сколько объектов было создано после выполнения этой строки кода?

Общепринятый ответ на этот вопрос интервью состоит в том, что код создает два объекта. Но я так не думаю; Я написал код для подтверждения.

public class StringTest {
    public static void main(String[] args) {
        String s1 = "a";
        String s2 = "a";
        String s3 = new String("a");
        System.out.println("s1: "+s1.hashCode());
        System.out.println("s2: "+s2.hashCode());
        System.out.println("s3: "+s3.hashCode());
    }
}

Выход:

Значит ли это, что был создан только один объект?

Подтвердите: у меня вопрос, сколько объектов было создано с помощью следующего кода:

String s = new String("xyz")

ВместоStringTest код.

Вдохновленный @Don Branson, я отладил следующий код:

public class test {
    public static void main(String[] args) {
        String s = new String("abc");
    }
}

И результат:

Идентификатор s равен 84, а идентификатор «abc» - 82. Что именно это означает?

Ответы на вопрос(19)

Ваш ответ на вопрос