Also brauch ich das eigenltich erst wenn Arrays dran kommen?
Bzw. was ist ne Arraylist?
Ich meine eine Array in Java deklariert man ja so weit ich das weis so:
Nein, nur für Generics.
Du kannst ganz normal ein int-Array erstellen:
Code:
int[] array = new int[5];
Aber wenn du dann Generische Klassen hast, kannst du denen nicht int als Typ übergeben.
Siehe auch Insel.
Grüße zwergmulch
Edit: Eine ArrayList ist eine spezielle Klasse in der Java-Bibliothek.
Sie kann Objekte eines beliebigen Typs speichern (außer halt die Primitiven - dafür gibt es die Wrapper-Klassen, wie oben schon beschrieben). Das Besondere an der ArrayList ist halt, das du sie vergrößern kannst, was mit einem Array ja nicht so einfach geht. Siehe auch Insel.
1)NurInteger kann null sein
Integer i =null;//erlaubtint i =null;//Fehler2)Aufpassen bei VergleichenInteger a =500;Integer b =500;System.out.println(a == b);//false (auf den üblichen JVMs)System.out.println(a.equals(b));//true (so ist es richtig)int a =500;int b =500;System.out.println(a == b);//true
Und dann ist da noch eine kleine Falle bei Listen:
Java:
List<Integer> list =newArrayList<Integer>();... fülle ListeInteger a =500;
list.remove(a);//entfernt alle Werte gleich 500 von der Listeint a =500;
list remove(a);//entfert das 501. Element der Liste
1) Der Elementartyp ist wesentlich schneller.
2) Der Elementartyp braucht weniger Speicher.
3) Der Elementartyp ist veränderlich.
4) Der Objekttyp ist unveränderlich.
5) Der Objekttyp muß verwendet werden, wenn nur Objekte verarbeitet werden können (Collections, Schlüssel für Maps).
6) Der Objekttyp ermöglicht die generische Programmierung.
7) Der Objekttyp ist serialisierbar.
8) Der Objekttyp kann den Wert null annehmen.
Einige der Punkte hätte man auch ohne eine Trennung ermöglichen können, das ist klar. Ich wollte sie nennen, um die Unterschiede, wie sie in Java existieren, aufzuzeigen. Der wichtigste Unterschied ist die Geschwindigkeit und der Speicher.
Im ersten Fall hast Du nur den Wert 5; im zweiten Fall wird der Wert 5 in ein Integer‐Objekt umgewandelt – was dort eigentlich steht, wurde Dir hier schon gesagt – und die Referenz zu diesem Objekt in zahl gespeichert.
Tatsächlich passiert noch mehr. Um die Effizienz zu steigern, wird intern ein Puffer mit Integer‐Objekten für die int‐Werte von -128 bis 127 verwaltet, damit jene nicht immer wieder neu erzeugt werden müssen. Das führt zu verwunderlichen, aber völlig logischen Ergebnissen wie beispielsweise diesem:
Der Vergleich in Zeile 3 ist ein Fehler, wenn man die Werte vergleichen möchte. Da es sich bei i1 und i2 um Objekte handelt, muß man sie mit der Methode equals(Object) vergleichen; in diesem Beispiel werden nur die Objektreferenzen verglichen. Ein Anfänger schlösse natürlich aus Zeile 3, hier würden die Werte verglichen, denn das Ergebnis ist wie erwartet. Tatsächlich stammen i1 und i2 aus dem Integer‐Puffer, sind also das selbe Objekt und haben damit dieselbe Referenz. i3 und i4 existieren nicht im Puffer, sie wurden neu erzeugt und haben daher unterschiedliche Referenzen.
Wichtig ist eigentlich nur folgendes: int ist klein und schnell, aber kein Objekt; Integer ist ein Objekt und kann wie jedes andere Objekt behandelt werden.