From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001
From: Sven Eisenhauer
Date: Fri, 10 Nov 2023 15:11:48 +0100
Subject: add new repo
---
.../hjp5/html/k100027.html | 183 +++++++++++++++++++++
1 file changed, 183 insertions(+)
create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100027.html
(limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100027.html')
diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100027.html b/Master/Reference Architectures and Patterns/hjp5/html/k100027.html
new file mode 100644
index 0000000..d507d07
--- /dev/null
+++ b/Master/Reference Architectures and Patterns/hjp5/html/k100027.html
@@ -0,0 +1,183 @@
+
+
+
+Handbuch der Java-Programmierung, 5. Auflage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4.5.1 Beschreibung
+
+
+Referenztypen sind neben den primitiven Datentypen die zweite wichtige
+Klasse von Datentypen in Java. Zu den Referenztypen gehören Objekte,
+Strings und Arrays. Weiterhin gibt es die vordefinierte Konstante
+null,
+die eine leere Referenz bezeichnet.
+
+
+Eigentlich sind auch Strings und Arrays Objekte, aber es gibt bei
+ihnen einige Besonderheiten, die eine Unterscheidung von normalen
+Objekten rechtfertigen:
+
+- Sowohl bei Strings als auch bei Arrays kennt der Compiler Literale,
+die einen expliziten Aufruf des new-Operators
+überflüssig machen.
+
- Arrays sind »klassenlose« Objekte. Sie können ausschließlich
+vom Compiler erzeugt werden, besitzen aber keine explizite Klassendefinition.
+Dennoch haben sie eine öffentliche Instanzvariable length
+und werden vom Laufzeitsystem wie normale Objekte behandelt.
+
- Die Klasse String
+ist zwar wie eine gewöhnliche Klasse in der Laufzeitbibliothek
+von Java vorhanden. Der Compiler hat aber Kenntnisse über den
+inneren Aufbau von Strings und generiert bei Stringoperationen Code,
+der auf Methoden der Klassen String
+und StringBuffer
+zugreift. Eine ähnlich enge Zusammenarbeit zwischen Compiler
+und Laufzeitbibliothek gibt es auch bei Threads und Exceptions. Wir
+werden auf diese Besonderheiten in den nachfolgenden Kapiteln noch
+einmal zurückkommen.
+
+
+
+
+- Die Zuweisung einer Referenz kopiert lediglich den Verweis auf
+das betreffende Objekt, das Objekt selbst dagegen bleibt unkopiert.
+Nach einer Zuweisung zweier Referenztypen zeigen diese also auf ein
+und dasselbe Objekt. Sollen Referenztypen kopiert werden, so ist ein
+Aufruf der Methode clone
+erforderlich (siehe Abschnitt 8.1.2).
+
- Der Gleichheitstest zweier Referenzen testet, ob beide Verweise
+gleich sind, d.h. auf ein und dasselbe Objekt zeigen. Das ist aber
+eine strengere Forderung als inhaltliche Gleichheit. Soll lediglich
+auf inhaltliche Gleichheit getestet werden, kann dazu die equals-Methode
+verwendet werden, die von den meisten Klassen implementiert wird (ebenfalls
+in Abschnitt 8.1.2 erläutert).
+Analoges gilt für den Test auf Ungleichheit.
+
+
+
+Anders als in C und C++, wo der *-Operator
+zur Dereferenzierung eines Zeigers nötig ist, erfolgt in Java
+der Zugriff auf Referenztypen in der gleichen Weise wie der auf primitive
+Typen. Einen expliziten Dereferenzierungsoperator gibt es dagegen
+nicht.
+
+
+
+
+
+
+
+Während primitive Typen lediglich deklariert werden, reicht dies
+bei Referenztypen nicht aus. Sie müssen mit Hilfe des new-Operators
+oder - im Falle von Arrays und Strings - durch Zuweisung von Literalen
+zusätzlich noch explizit erzeugt werden.
+
+
+
+
+
+
+
+
+Vector v = new Vector();
+
+ |
+
+
+
+Listing 4.11: Erzeugen eines Objekts mit dem new-Operator
+
+
+Java verfügt über ein automatisches Speichermanagement.
+Dadurch braucht man sich als Java-Programmierer nicht um die Rückgabe
+von Speicher zu kümmern, der von Referenzvariablen belegt wird.
+Ein mit niedriger Priorität im Hintergrund arbeitender Garbage
+Collector sucht periodisch nach Objekten,
+die nicht mehr referenziert werden, um den durch sie belegten Speicher
+freizugeben.
+
+
+
+
+
--
cgit v1.2.3