Vc deve sempre se lembrar que strings em Java são instâncias da classe String, logo são objetos como quaisquer outros.
x e y, no seu exemplo, são referências para objetos String. Quando vc cria constantes String, a maioria dos compiladores Java compartilha constantes string no mesmo endereço, logo as referências ficam iguais. Nos seu primeiro exemplo, as duas constantes são compartilhadas na mesma posição de memória, pois se tratam da mesma constantes string, logo x e y são iguais. No segundo exemplo, como vc usa Integer.toString(100), o compilador não tenta compartilhar o endereço, e armazena a string em uma posição de memória diferente, logo x e y têm valores diferentes. Por isso que só funciona bem a comparação de strings usando "x.equals(y)", porque o operador "==" compara não o conteúdo das strings, mas o valor de suas referências. Em Ter, 2002-10-15 às 11:36, Michel escreveu: > 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. Atenciosamente, -- Itamar Almeida de Carvalho Desenvolvimento de Sistemas [EMAIL PROTECTED] - (+85) 281-2223 Oktiva Telecomunicações e Informática Ltda http://www.oktiva.com.br
signature.asc
Description: PGP signature