O método equals do StringBuffer retorna verdadeiro somente se vc. está
comparando duas referências do mesmo objeto.

Ex:
{
        StringBuffer sb1 = new StringBuffer("a");
        StringBuffer sb2 = new StringBuffer("a");
        StringBuffer sb3 = s1;

        System.out.println(sb1.equals(sb3)); // imprime true
        System.out.println(sb1.equals(sb2)); // imprime false
        System.out.println(sb1.toString().contentEquals(sb2)); // imprime true
}

Você pode estar se perguntando: Mas por que o método equals do StringBuffer
não é igual ao método equals do String?

Na verdade, o StringBuffer implementa o método equals de modo correto. Quem
tem uma implementação diferente mesmo é a classe String, que faz uma
comparação caracter a caracter ao invés de checar a o tipo e referência.
Esta checagem padrão está presente em qualquer objeto, uma vez que o método
equals é implementado na classe Object. Apenas algumas classes (como a
String) é que sobrescrevem este método para alguma checagem específica.

Porém, como você pode observar na última linha do meu código, é possível
fazer esta comparação que vc. deseja convertendo um dos objetos StringBuffer
para String (através do método toString()). Uma vez que um deles é do tipo
String, você pode utilizar o método contentEquals(<StringBuffer>), que
compara um objeto do tipo String a um StringBuffer.

Com isso vc. pode usar os outros métodos da classe String também. Para fazer
uma comparação case-insensitive, basta proceder da seguinte forma:

...
        StringBuffer sb4 = new StringBuffer("A");
        System.out.println(sb1.toString().equalsIgnoreCase(sb4.toString())); //
imprime true
...

{}'s
David Rissato Cruz

-----Mensagem original-----
De: Marcio Adriano Batista Leal [mailto:[EMAIL PROTECTED]
Enviada em: quarta-feira, 26 de fevereiro de 2003 22:21
Para: [EMAIL PROTECTED]
Assunto: [java-list] Duvida StringBuffer



Gostaria de Saber porque não apresenta a mensagem OK, pois estou comparando
dois Objetos identicos.

public class testestring
{
   public static void main(String args[])
   {
     StringBuffer sb = new StringBuffer("abc");
     StringBuffer s1 = new StringBuffer("abc");
     if (sb.equals(s1))
     {
       System.out.println("OK");
     }
   }


}




_________________________________________________________________
MSN Hotmail, o maior webmail do Brasil.  http://www.hotmail.com


------------------------------ 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]
-------------------------------------------------------------------------



------------------------------ 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] 
-------------------------------------------------------------------------

Reply via email to