Os 2 objetos não são identicos, são 2 objetos StringBuffes diferentes. Você está assumindo que a chamada do equals retorne true porque ambos buffers contém a mesma String. Porém, tal compartamento não está especificado na API (http://java.sun.com/j2se/1.4/docs/api/java/lang/StringBuffer.html). Mais precisamente, o método equals da classe StringBuffer não está documentado, portanto provavelmente tal classe não redefine esse método).
Já a classe String (http://java.sun.com/j2se/1.4/docs/api/java/lang/StringBuffer.html) documenta o uso de equals:
Compares this string to the specified object. The result is |true| if and only if the argument is not |null| and is a |String| object that represents the same sequence of characters as this object.
Portanto, para o seu código retornar true, o certo seria:
if (sb.toString().equals(s1.toString()))
Felipe
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"); } }
}
------------------------------ 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] -------------------------------------------------------------------------