Estou estudando para certificação e me ocorreu uma dúvida que não consigo entender…
String s1 = "abc";
Nesse caso é criada a string "abc"no pool constante de strings, mas este pool está fora do heap?
String s2 = new String("abc");
Nesse caso o livro diz: “Java criará um novo objeto String na memória comum (e não no pool) e s2 o referenciará. Além disso a string literal “abc” será inserida no pool.”. Agora complicou!
Pergunta: se eu não der new String(“alguma coisa”) o objeto não será instanciado na memoria? Do contrario, a variavel de referencia fará referencia direta ao pool? Se o new String cria dois objetos na memoria, qual será referenciado?
Grato desde já aos Javeiros que puderem colaborar.