Title: Message

Caro Michel,

No Exemplo1, para salvar espaço e reduzir a complexidade, até mesmo duas strings são inicializadas, o compilador Java cria somente um espaço na memória para armazenar "100" quando o main é executado. O espaço da memória é compartilhado pelos dois objetos Strings na hora da compilação, e as variáveis x e y são simplismente ponteiro para o  mesmo espaço de memória. Por isto, que você ve plotar IGUAL quando utiliza ==, os dois são o mesmo espaço de memória.

No Exemplo 2, quando o código Java é executado, o conteúdo das Strings x, y será o mesmo:  a string "100". Entretanto, eles não irão apontar para o mesmo local de memória, então ele não plotará IGUAL neste caso. O objeto String x  é alocado e recebe o valor "100" na hora da compilação. Já o objeto String y é alocado e recebe o valor "100" na hora que o programa roda, portanto ele aloca outro espaço de memória diferente.

Espero ter ajudado. 

 

Rafael Siqueira

Webraska do Brasil (Mobiminds)

Director of Development - Automotive Division

Tel.: +55-11-3518-9080 r.208

[EMAIL PROTECTED]

 

 

--------------------------------------------------------

 Perdido?  Visite

--------------------------------------------------------

 

-----Original Message-----
From: Michel [mailto:[EMAIL PROTECTED]]
Sent: terça-feira, 15 de outubro de 2002 11:36
To:
[EMAIL PROTECTED]
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