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

Attachment: signature.asc
Description: PGP signature

Responder a