String s = new String (“xyz”). Quantos objetos foram criados após essa linha de código ser executada?

A resposta comumente aceita a essa questão da entrevista é que dois objetos são criados pelo código. Mas eu não penso assim; Eu escrevi algum código para confirmar.

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());
    }
}

A saída é:

Isso significa que apenas um objeto foi criado?

Reafirme: Minha pergunta é quantos objetos foram criados pelo seguinte código:

String s = new String("xyz")

Ao invés deStringTest código.

Inspirado por @Don Branson, depurei o código abaixo:

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

E o resultado é:

O id de s é 84 e o id de "abc" é 82. O que exatamente isso significa?

questionAnswers(19)

yourAnswerToTheQuestion