> 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");
>      }
>    }
> }

      Se você olhar no javadoc de Stringbuffer
(http://java.sun.com/j2se/1.4.1/docs/api/java/lang/StringBuffer.html),
vai ver que ele não faz override do método equals(), ou seja, utiliza
o mesmo método equals() de Object, que não serve para comparar
conteúdo. Por outro lado, se você olhar o javadoc da classe String
(http://java.sun.com/j2se/1.4.1/docs/api/java/lang/String.html) você
verá que ela implementa o método equals(), e serve para isso. Então a
comparação correta pra você fazer no seu programa seria:

      if (sb.toString().equals(s1.toString()))

      Eu concordo, no entanto, que isto não é muito intuitivo e que
a classe StringBuffer deveria também implementar o método equals().


      []s,

      Patola (Cláudio Sampaio)


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