Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala pessoal, sou eu mais uma vez.
Eu estou estudando o Java por conta. Atualmente eu estou no capítulo 6 do SCJP (Caty Sierra...) e me deparei com a descrição de como funcionam as Strings em Java. Excelente, compreendi que para cada String é criado, no heap, um objeto e ele é ou não referênciado por uma variável de instância ou afim.
Sei também que este objeto pode permanecer em um pool de strings...
Isto tudo acontece "por debaixo dos panos", isto é, à nível de compilador.
Então eu resolvi fazer um teste:
public class Duvida {
public static void main(String []args) {
String a = "abcdef";
String b = a;
System.out.println(b == a);
b = "abcdef"; //linha comentada
System.out.println(b == a);
System.out.println(b.equals(a));
}***true*
***true*
**Na linha comentada (b = "abcdef";) - se eu substituir o comando por String b = "abcdef"; - a saída será:
true
false
true
Eu fiquei na dúvida, eu imaginei que seria igual para ambos, que teria sido criado um novo objeto quando eu fiz b = "abcdef"; - no entanto isto não aconteceu exatamente. Foi porque eles estão sendo referenciados para o mesmo lugar no pool? Ou estou fazendo a maior confusão?
Desde já, grato pela atenção!
Carregando comentários...