Java Reference
In-Depth Information
Nenner identisch sind. Vergleichen Sie diese beiden Objekte aber, so liefert der Vergleich
immer false zurück, auch wenn sie vom gespeicherten Wert her eigentlich gleich sind
( Abbildung 5.17 ):
Brucha=newBruch();//aalsBruchdefinieren
a.zaehler = 3; // dem Bruch den Wert ¾ zuweisen
a.nenner = 4;
Bruchb=newBruch();//balszweitenBruchdefinieren
b.zaehler = a.zaehler; // b den Wert von a zuweisen
b.nenner = a.nenner;
if (a == b) ... // liefert false zurück
a
b
a.zaehler
a.nenner
b.zaehler
b.nenner
Arbeitsspeicher
3
4
3
4
Abbildung 5.17 Echte Kopie eines Objekts
Was sich hier zunächst als etwas problematisch darstellt, ist in der Praxis überhaupt
nicht problematisch. Java vermeidet aus Gründen der Performance und des Speicher-
platzbedarfs, bei jeder Wertzuweisung eine komplette Kopie eines Objekts anzulegen.
In den wenigen Fällen, in denen Sie tatsächlich eine exakte Kopie eines Objekts benöti-
gen, gehen Sie dann in der zuletzt beschriebenen Form vor.
5.2.3
Gültigkeitsbereich und Lebensdauer
Auch was den Gültigkeitsbereich und die Lebensdauer betrifft, gibt es Unterschiede zwi-
schen lokalen Variablen und den Datenelementen eines Objekts. Wie bereits bei der
Behandlung der lokalen Variablen bemerkt, gelten diese nur innerhalb des Blocks, in
dem sie definiert wurden. Die Attribute eines Objekts haben dagegen unabhängig von
der Stelle, an der sie definiert wurden, innerhalb der gesamten Klasse Gültigkeit.
Die Lebensdauer von lokalen Variablen beginnt in dem Augenblick, in dem das Pro-
gramm die Stelle ihrer Definition erreicht, und sie endet mit dem Verlassen des Blocks,
innerhalb dessen die Definition erfolgte.
 
Search WWH ::




Custom Search