Moin,
bin jetzt beim Thema Wrapperklassen u hätte 1 o 2 Fragen..
Primitive Datentypen sind ja keine Objekte, dafür gibt es die Wrapperklassen.
Packt man die primitves in Wrapper, dann kann man Methoden wie z.B.
objektname.toString(); usw. anwenden.
Ist das der einzige Grund sie zu wrappen?
Denn ich könnte ja auch so schreiben: Integer.toString(primitive).
Und wenn ich das tue:
int i = 1;
String s = Integer.toString(i);
..wird dann intern das i ge-wrappt, in String verwandelt und das wrapper-objekt
danach gleich für den Garbage Collector freigegeben?
(Das i bleibt ja primitiv und s enthält "1", aber eine Referenz auf das (evtl intern
erstellte) i-objekt habe ich nicht.)
Dann schreibt er (Javainsel) weiter unten:
Zitat:
3.8.7 Autoboxing: Boxing und Unboxing
Der Compiler konvertiert nach festen Regeln, und auch die Operatoren ++, -- sind
erlaubt.
Wichtig ist, dass weder (1) noch (2) das Original-Integer-Objekt mit der 12 ändern
(alle Wrapper-Objekte sind immuntable), sondern i nur andere Integer-Objekte für 13
und 14 referenziert.
Zitat-Ende
Frage: Was passiert dann mit dem ursprünglichen i-objekt, das 12 enthält? Garbage
Collector?
Noch eine Frage:
Ist >>Integer i = 1;<< und >>Integer i = new Integer( 1 );<< das selbe?
Danke schonmal
und frohe Ostern
Gruß
Udo
.
bin jetzt beim Thema Wrapperklassen u hätte 1 o 2 Fragen..
Primitive Datentypen sind ja keine Objekte, dafür gibt es die Wrapperklassen.
Packt man die primitves in Wrapper, dann kann man Methoden wie z.B.
objektname.toString(); usw. anwenden.
Ist das der einzige Grund sie zu wrappen?
Denn ich könnte ja auch so schreiben: Integer.toString(primitive).
Und wenn ich das tue:
int i = 1;
String s = Integer.toString(i);
..wird dann intern das i ge-wrappt, in String verwandelt und das wrapper-objekt
danach gleich für den Garbage Collector freigegeben?
(Das i bleibt ja primitiv und s enthält "1", aber eine Referenz auf das (evtl intern
erstellte) i-objekt habe ich nicht.)
Dann schreibt er (Javainsel) weiter unten:
Zitat:
3.8.7 Autoboxing: Boxing und Unboxing
Der Compiler konvertiert nach festen Regeln, und auch die Operatoren ++, -- sind
erlaubt.
Code:
Integer i = 12;
i = i + 1; // (1)
i++; // (2)
System.out.println( i ); // 14
(alle Wrapper-Objekte sind immuntable), sondern i nur andere Integer-Objekte für 13
und 14 referenziert.
Zitat-Ende
Frage: Was passiert dann mit dem ursprünglichen i-objekt, das 12 enthält? Garbage
Collector?
Noch eine Frage:
Ist >>Integer i = 1;<< und >>Integer i = new Integer( 1 );<< das selbe?
Danke schonmal
und frohe Ostern
Gruß
Udo
.