(Denkfrage: ) Könnten zwei verschiedene Objekte äquivalente Daten enthalten?
Ja. Die Objekte würden aus verschiedenen Speicherbytes konstruiert werden, aber die gleichen Werte enthalten.
Erinnern Sie sich, 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:
class StringBsp6
{
public static void main ( String[] args )
{
String strA; // Referenz auf das erste Objekt
String strB; // Referenz auf das zweite Objekt
strA = new String( "Der Gingham Hund" ); // das erste Objekt erzeugen
// seine Referenz speichern
System.out.println( strA );
strB = new String( "Der Gingham Hund" ); // das zweite Objekt erzeugen
// seine Referenz speichern
System.out.println( strB );
if ( strA == strB )
System.out.println( "Dies wird nicht ausgegeben werden.");
}
}
|
In diesem Programm gibt es zwei Objekte, jedes ist ein eindeutiges Ganzes.
Jedes Objekt enthält zufällig 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.