Java array.length und array.size unterschied?
kann mir einer sagen ob es zwischen den beiden ein unterschied gibt?
danke.)
6 Antworten
Length gibt die Kapazität an, also wieviele Elemente in das Array passen. Size dagegen entspricht der Anzahl der tatsächlich hinzugefügten Elemente.
Hast Recht. Habe nur gerade eine positiv bewertete Antwort auf Stack Overflow gefunden, wo genau das stand. Ich dachte auch, es gibt kein size-Attribut für Arrays. Gibt es auch nicht...
Meines Wissens nach gibt es kein "Array.size" (oder zumindest konnte ich nichts dazu finden).
Array.length:
Im Endeffekt gibt es dir die Größe des Arrays an, indem es dir die Menge an möglichen Elementen angibt, wenn man es vereinfachen will.
Praktisch gesehen, werden Arrays bei der Deklaration eines Arrays ohne vorgegebene Werte die Elemente vorinitalisiert (s. Kommentar von ohwehohach).
Wie sieht das also aus.
Folgender Quellcode:
public static void main(String[] ARGS){
String[] t = new String[4];
System.out.println(t.length);
t[0] = "a";
t[1] = "b";
System.out.println(Array.getLength(t));
for(int i=0;i<t.length;i++){
System.out.println(t[i]);
}
}
Wenn du das mal einfach ausführst, wirste sehen, dass ausgegeben wird:
4 (Anmerkung: Größe des Arrays)
a
b
null
null
Also werden auch komplexe Datentypen in Java vorinitalisiert, allerdings mit "null"
Unterschied Datentypen: https://www.java-tutorial.org/datentypenundvariablen.html
null: http://www.andreas-schrade.de/java/2013/08/12/java-die-null-referenz-teil-I/
Wie sieht das ganze im Debugger aus:
Die Variablen bei der ersten Ausgabe:
Wie man sieht sind alle Elemente auf null gesetzt. Die Länge beträgt 4.
Nachdem sowohl t[0], als auch t[1] gesetzt wurden, beträgt die Länge ebenfalls 4.
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Dort siehste auch nochmal die Standardwerte für einfache Datentypen.
Jetzt meine abschließende Frage: Meinteste vll. "size" bei den primitiven Datentypen? Das kannste z.B. mit "Integer.SIZE" aufrufen. Dort wäre das Ergebnis 32. Das wäre einfach die Größe die der Datentyp im Speicher belegt in Bit.
Die Eigenschaft size gibt es bei Listen, bei Arrays heißt sie length - sie bedeuten aber beide dasselbe, nämlich wie viele Elemente das Array/die Liste umfasst.
Es gibt kein array.size. Die Anzahl Elemente in einem Array wird bestimmt durch array.length.
soze gibts ja nur bei list und set?
Das ist nicht korrekt. Wenn ich ein int[5] habe, dann weiß niemand, wieviele Elemente tatsächlich "hinzugefügt" sind, denn alle 5 Werte sind tatsächlich vorinitialisiert und ich könnte auch das 3. Element auf 20 setzen, ohne die anderen anzutasten. Daher gibt es auch kein array.size, sondern nur array.length.