(Denkfrage: ) Könnten zwei verschiedene Objekte äquivalente (gleiche) Daten enthalten?
Ja. Die Objekte würden aus verschiedenen Speicherbytes konstruiert werden, aber die gleichen Werte enthalten.
class StringBsp6 { public static void main ( String[] args ) { String strA; // Referenz auf das 1. Objekt String strB; // Referenz auf das 2. Objekt strA = new String( "Der Gingham Hund"); // 1. Objekt erzeugen // Referenz speichern System.out.println(strA); strB = new String( "Der Gingham Hund"); // 2. Objekt erzeugen // Referenz speichern System.out.println(strB); if ( strA == strB ) System.out.println( "Das wird nicht ausgegeben werden."); } }
Erinnert Euch daran, dass Objekte (1) Identität, (2) Zustand und (3) Verhalten haben. Identität bedeutet, dass jedes Objekt ein eindeutiges Ganzes ist, ganz gleich wie sehr es einem anderen gleicht. Hier ist ein Programm, das diese Situation zeigt:
In diesem Programm gibt es zwei Objekte, jedes ist ein eindeutiges Ganzes.
Jedes Objekt enthält Daten, die äquivalent zu denen des Anderen sind. Jedes Objekt besteht aus einem Teil Arbeitsspeicher, der unabhängig von dem ist, der das andere Objekt ausmacht.
Die Variable strA
enthält eine Referenz auf das erste Objekt und
die Variable strB
enthält eine Referenz auf das zweite Objekt.
Da die Information in strA
von der Information in strB
verschieden ist,
ist
( strA == strB )
false
, (genau wie in dem vorherigen Programm mit zwei Objekten.)
Da es zwei Objekte gibt,
gemacht aus zwei verschiedenen Abschnitten des Arbeitsspeichers,
unterscheidet sich die Referenz, die in strA
gespeichert ist,
von der Referenz in strB
.
Es spielt keine Rolle, dass die Daten innerhalb der Objekte gleich sind.
Was wird dieses Beispielprogramm auf dem Bildschirm ausgeben?