No exemplo 1, x e y referenciam o mesmo objeto ('100") dentro do programa. Como � uma constante qq. linguagem n�o definir� internamente dois "100", mas somente um "100". Assim a referencia para os dois String � a mesma.
 
No exemplo 2, o resultado de "String x = Integer.toString(100)" � um outro objeto totalmente diferente de "100", apesar do conte�do ser o mesmo. A saida desse metodo � sempre um NOVO objeto String, assim as referencia s�o diferentes.
 
Se voce mudar o exemplo 1 para "String x = new String("100)" e "String y = new String("100)" a condi��o n�o ser� mais igual, pois se trata de dois objetos DISTINTOS, com conteudos iguais.
 
Roberto Tatemoto
 
 
Subject: [java-list] Inst�ncias

Ol� galera!
    Para exemplificar minha d�vida, mostrarei dois exemplos:
-------------EXEMPLO 1--------------
public static void main(String args[])
{
    String x = "100";
    String y = "100";
    if(x == y)
        System.out.println("IGUAL!!!")
}
------------EXEMPLO 2----------
public static void main(String args[])
{
    String x = "100";
    String y = Integer.toString(100);
    if(x == y)
        System.out.println("IGUAL!!!");
}
 
No exemplo 1, aparece na tela "IGUAL!!!", no exemplo 2 n�o aparece nada!
Sei que para comparar duas Strings tenho o m�todo equals(String s), mas para fins de conhecimento, gostaria de saber por qu� o 1� exemplo funciona e o 2� n�o.
 
Obrigado.

Responder a