Title: Message
Michel,
Vc, provavelmente, sabe que "String" não é um tipo primitivo e por isso quando vc compara dois tipos não-primitivos com  " == " vc está na realidade está comparando as instãncias (referências) e não o seu conteúdo(como vc escreveu: "...tenho o mótodo equals(String s)" ). Por exemplo:
 
String a1 = new String("A");
String a2 = new String("A");
 
a1 == a2 é false
 
agora quando vc cria uma string assim:
 
String a1 = "A";
String a2 = "A";
 
a1==a2 é true
 
Isso acontece por que, ao cirar uma String assim (String a1 = "A";), a string é armazenada em um buffer de strings para que o seu uso seja mais ágil (particularidade da classe String...) e quando elas são comparadas  com "==" o conteúdo é comparado caracter a caracter, e não suas instâncias.
 
espero ter ajudado,
 
 
 Michel wrote:
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.


------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------

Responder a