1. System.out.println(sb1 == sb2);
StringBuffer de igual método devuelve true sólo cuando un objeto StringBuffer se compara consigo mismo. Devuelve falso cuando se compara con cualquier otro StringBuffer, incluso si los dos contienen los mismos caracteres.
Esto se debe a "==" comprueba la igualdad de referencia y ya que ambos SB1 y SB2 son diferentes referencias de objetos, por lo que la salida en este caso es "falsa"
embargo, si usted quiere comprobar si el contenido es iguales en estos dos objetos StringBuffer, puede utilizar esto:
sb1.toString().equals(sb2.toString())
2. System.out.println(sb1.equals(sb2));
esto está dando salida como "falso" porque .equals método() no ha sido anulado en la clase StringBuffer. Entonces está usando el método .equals() de su clase padre "Object". En la clase de objeto, se ha escrito .equals() para verificar la igualdad de referencia.
Tenga en cuenta que sb3.equals (sb4) devolverá "verdadero" en caso de Cadena. Porque el método .equals() ha sido anulado en la clase String para verificar y hacer coincidir el contenido de dos cadenas diferentes.
StringBuidler no es seguro para nada por lo que sé – Yaneeve
StringBuilder no es seguro para subprocesos. Desde los documentos SDK en StringBuilder: "compatible con StringBuffer, pero con ** sin garantía de sincronización **", del párrafo de introducción aquí: http://java.sun.com/j2se/1.5.0/docs/api/ java/lang/StringBuilder.html –
por supuesto, mi mal. lea el documento de StringBuffer demasiado rápido, TI se complementa con StringBuilder, por lo tanto, está diseñado para ser utilizado por un único hilo. lo siento por eso. – mkolodziejski