Vergleichen von StringBuffer Instanzen

exercise No. 251

F:

Wir betrachten den Wertvergleich zweier StringBuffer Instanzen:

Code Ergebnis
final StringBuffer
  a = new StringBuffer("test"),
  b = new StringBuffer("test");

System.out.println(a.equals(b));
false

Für String Instanzen erhalten wir hingegen:

Code Ergebnis
final String
  a = new String("test"),
  b = new String("test");

System.out.println(a.equals(b));
true

Erklären Sie dieses unterschiedliche Ergebnis.

Hinweis: Vergleichen Sie die Klassen String und StringBuffer im Hinblick auf die Implementierung der equals() Methode.

A:

Doe Klasse StringBuffer besitzt keine equals(...) Implementierung. Der Aufruf a.equals(b) verwendet daher Object.equals(). Dies liefert false, da es sich bei a und b um zwei verschiedene StringBuffer Instanzen handelt.