¿El método StringBuffer es igual al contenido de comparación?

Posible duplicado:
Comparando el contenido de StringBuffer con iguales

StringBuffer s1= new StringBuffer("Test"); StringBuffer s2 = new StringBuffer("Test"); if(s1.equals(s2)) { System.out.println("True"); } else { System.out.println("False"); } 

¿Por qué ese código se imprime “Falso”?

StringBuffer no anula el método Object.equals , por lo que no está realizando una comparación de cadena. En su lugar, está realizando una comparación directa de objetos. Su condicional también puede ser si (s1 == s2). Si desea comparar las cadenas, primero deberá convertir los búferes en cadenas.

Consulte http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuffer.html

Edición: Supongo que estamos en un mundo java.

ps Si estás en un entorno de un solo hilo, o tus buffers están aislados en un solo hilo, deberías estar usando un StringBuilder en lugar de un StringBuffer .

StringBuffer igual no se reemplaza para verificar el contenido. Está utilizando el valor por defecto “de poca profundidad” que compara las referencias que hereda de java.lang.Object.