Apesar dos objetos terem o mesmo conteúdo ("abc"), eles apontam para diferentes endereços na memória.
Quando o construtor da classe é chamado, uma de suas funções é essa : alocar memória para um novo objeto. Foi o que aconteceu no seu exemplo, vc chamou o construtor para os dois objetos. Para testar, faça o seu if assim :
if (!sb.equals(s1))
vai ver que dessa forma vai imprimir o "ok" , pois os objetos são diferentes.


Até mais.


Marcio Adriano Batista Leal wrote:



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




Responder a