Vamos
lá... no primeiro exemplo, como vc está usando uma string literal para
inicializar as duas variáveis, na verdade o que acontece é uma otimização na
hora da compilação, criando uma constante para representar a string literal.
Sendo assim, as duas variáveis "apontam" para o mesmo objeto.
A diferença é que no primeiro exemplo, a declaração das duas variáveis
String (x e y) são uma forma especial de inicialização em Java, porque os
valores à direita do operador de atribuição são literais, e não objetos String.
Os literais tem todos os atributos e procedimentos da cla