CodeGym /Java Kurs /Java Syntax /Objekte erstellen

Objekte erstellen

Java Syntax
Level 2 , Lektion 3
Verfügbar
Objekte erstellen - 1

„Hallo, hier ist wieder dein Lieblingslehrer. Da du so große Fortschritte machst, habe ich beschlossen, dir von Objekten zu erzählen und davon, wie man damit umgeht.“

„Um ein Objekt zu erstellen, musst du das Schlüsselwort 'new' gefolgt von seinem Typnamen (Klassennamen) eingeben. Angenommen, wir haben eine Klasse namens ‚Katze':“

Code Beschreibung
Cat cat;
Deklariert eine Katze-Referenzvariable namens katze. Der Wert der Variablen katze ist Null.
new Cat();
Erstellt ein Katze-Objekt.
Cat cat = new Cat();
Erstellt eine Katze-Referenzvariable namens katze.
Erstellt ein neues Katze-Objekt. Weist der Variablen katze eine Referenz auf das neu angelegte Objekt zu.
Cat kitty = new Cat();
Cat smokey = new Cat();
Zwei Objekte werden erstellt. Referenzen auf diese werden zwei verschiedenen Variablen zugewiesen.
Cat kitty = new Cat();
Cat smokey = new Cat();

smokey = kitty;
Zwei Objekte werden erstellt. Referenzen auf diese werden zwei verschiedenen Variablen zugewiesen.

Dann setzen wir die Variable smokey gleich einer Referenz auf das Objekt, auf das die Variable kitty verweist. Beide Variablen verweisen nun auf die zuerst erstellten Objekte.
(Da das zweite Objekt nirgendwo mehr referenziert wird, gilt es nun als Garbage)

Cat kitty = new Cat();
Cat smokey = null;

smokey = kitty;

kitty = null;
Ein Katze-Objekt wird erstellt und eine Referenz darauf wird der ersten Variablen (kitty) zugewiesen. Die zweite Variable (smokey) speichert eine leere (null) Referenz.

Beide Variablen verweisen auf das gleiche Objekt.

Jetzt verweist nur noch smokey, aber nicht kitty, auf ein Objekt.

„Was würde passieren, wenn wir ein Objekt erstellen und keine Referenz in einer Variablen speichern würden?“

„Wenn wir ein Objekt einfach erstellen, ohne es einer Variablen zuzuweisen, erstellt die Java-Maschine es und deklariert es dann als Garbage (ein unbenutztes Objekt). Nach einer Weile wird das Objekt während der Garbage Collection entsorgt.“

„Wie entsorge ich ein Objekt, den ich nicht mehr brauche?“

„Das machst nicht du. Sobald keine Variablen auf ein Objekt verweisen, wird es als Garbage klassifiziert und von der Java-Maschine bei der nächsten Garbage Collection zerstört. "

Solange es mindestens eine Referenz auf ein Objekt gibt, gilt es als aktiv und wird nicht zerstört. Wenn du ein Objekt früher entsorgen möchtest, kannst du alle Referenzen darauf löschen, indem du allen Variablen, die darauf verweisen, null zuweist.

„Ich verstehe. Im Vergleich zu den letzten Lektionen sieht das ziemlich einfach aus.“

„Diego war die ganze Nacht wach und hat sich Aufgaben für dich ausgedacht. Er hat sich diese besondere Mühe nur für dich gemacht. Er hat einen tollen Sinn für Humor, weißt du?“

Kommentare (7)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Holger Level 3, München, Germany
12 Januar 2023
„Das machst nicht du. Sobald keine Variablen auf ein Objekt verweisen, wird es als Garbage klassifiziert und von der Java-Maschine bei der nächsten Garbage Collection zerstört." Das ist ganz schön gewalttätig. Warum sollte ich ein Objekt entsorgen, wenn ich es nicht mehr brauche? Man weiss nie, wozu man etwas nochmal brauchen kann. "Solange es mindestens eine Referenz auf ein Objekt gibt, gilt es als aktiv und wird nicht zerstört. Wenn du ein Objekt früher entsorgen möchtest, kannst du alle Referenzen darauf löschen, indem du allen Variablen, die darauf verweisen, null zuweist." Wieso eine Zuweisung von null? Wenn ich etwas von Anfang an nicht brauche, dann erstelle ich es erst gar nicht und wenn ich es später nicht mehr brauche, dann kann ich es auch auskommentieren.
Furô Level 9, Baden-Württembrg, Germany
18 Januar 2023
Dein Prgramm bläht sich doch nur auf, wenn du keinen Garbage Collector hast. Nicht mehr benötigter Speicherplatz kann für neues freigegeben werden. Sonst wird dein Programm zur Schnecke und gibt nach einiger Zeit den Geist auf. Eine NULL-Zuweisung hat mit der Zahl 0 nichts gemeinsam. In diesem Beispiel von oben ist NULL gleichzusetzen mit "leer" / "nicht vorhanden". Also unnötig belegter Speicher und kann weg (Garbage). Auskommentieren bringt in diesem Fall nichts, weil ein auskommentierter Befehl nur unsichtbar für den Compiler ist. Deine zuvor deklarierten / initialisierten Variablen belegen nach wie vor Speicher.
Fabian Level 7, Stuttgart, Germany
18 Juni 2020
Vorherhige Kommentare einfach ignorieren und für die Ausgabe den Text der Aufgabenstellung nehmen. Wenn du nicht gut programmierst, wird Java kommen und dein Gedächtnis auffressen
Max Level 9, Germany
12 Mai 2020
Übersetzungsfehler bei der letzten Aufgabe. Der deutsche Text benötigt mehr als 58 Zeichen ;)
Chris Cross Level 2, Imst, Austria
8 April 2020
Ich fand es diesmal einfach.🤔😅👌
Neumanns5 Level 2, Dresden, Germany
8 April 2020
war etwas schwer zumindest der anfang.
Martin Level 6, Bern, Switzerland
24 November 2019
Beschreibung der Aufgabe: "...auffressen." (mit Punkt) Beschreibung der Requirements: "...auffressen" (ohne Punkt) Aufgabe und Zielüberprüfung stimmen nicht überein.