Ah, entendi!
Lá vamos nós…
Test a = new Test();
Test b = new Test();
Test c = a;
return (a == b)?true:false; //Retornará false
return (a == c)?true:false; //Retornará true
return (b == c)?true:false; //Retornará false
Quando eu usar new em Test a, a JVM irá alocar um espaço na memória de heap que irá guardar os bits referentes a variavel a.
Quando eu usar new em Test b, a JVM irá alocar um espaço na memória de heap que irá guardar os bits referentes a variavel b. Porém, os bits referentes a b serão diferentes de a.
Quando eu definir que c = a, estarei passando para a variavel c o endereco de bits refentes a variavel a.
Concluindo…
O registro de a é diferente de b, pois sao duas referencias distintas.
O registro de c é o mesmo de a, pois tenho o mesmo registro que pode ser acessado por duas variaveis diferentes, certo?
ViniGodoy,
Não entendi muito bem o que você quiz dizer com “desde que criados como literais”…
Então quer dizer que se eu declarar uma variavel como null, esta vai para o heap e quando eu declarar uma variavel com algum literal esta vai para Pool?