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