Array beim erstellen mit Werten füllen

niklas._.kpl

Mitglied
Hallo, ich habe mal eine Frag zu den Arrays. Gibt es eine Möglichkeit das Array schon beim Erstellen mit Werten zu füllen?
Also:
Java:
int[] testArray = new int[5]; //und hier dann direkt werte in dem Array Speichern
Liebe Grüße Niklas
 
Ja, Du kannst Arrays bereits bei der Deklaration (das ist das, was Du mit Erstellen gemeint haben wirst) initialisieren.

Dazu kannst Du die Größe weg nehmen und dann nach der ] dann in { die Werte durch Komma getrennt auflisten. Das wäre dann also z.B.:

Java:
        int[] zahlen = new int[]{ 1, 2, 3, 4, 5 };
        String[] woerter = new String[] { "eins", "zwei", "drei" }:
 
Und dann muss man nicht mal die Größe angeben ?
Sogar noch stärker: Man darf dann keine Größe mehr angeben.

Aus Sicht der Java Spezifikation sind das zwei unterschiedliche Ausdrücke:
  • nur die reine Erstellung mit new ist eine "Array Creation Expression" (Da muss für mindestens die erste Dimension eine Größe angegeben werden.)
  • Die Initialisierung ist ein "Array Initializer"
(Die jeweiligen Kapitel und Links habe ich mal weggelassen)

Du kannst es also ausprobieren: Mit Größe wird der Compiler den Ausdruck nicht mögen. Erklären kann man sich das auch in etwa so: Der Compiler muss schauen, was er vor sich hat und was nicht. Wenn der Compiler ein new int[5] findet, dann ist dies schon eindeutig für ihn: Eine "array creation expression" liegt vor. Daher meckert er, dass die "{" unerwartet ist - er hätte da gerne einen Abschluss mit einem ";".
Wenn der Compiler aber keine Größe hat, dann weiss er: Eine array creation expression ist es nicht und schaut weiter. Er erwartet also kein ";" sondern sieht mit der { dann den array initializer.
 
Sogar noch stärker: Man darf dann keine Größe mehr angeben.

Aus Sicht der Java Spezifikation sind das zwei unterschiedliche Ausdrücke:
  • nur die reine Erstellung mit new ist eine "Array Creation Expression" (Da muss für mindestens die erste Dimension eine Größe angegeben werden.)
  • Die Initialisierung ist ein "Array Initializer"
(Die jeweiligen Kapitel und Links habe ich mal weggelassen)

Du kannst es also ausprobieren: Mit Größe wird der Compiler den Ausdruck nicht mögen. Erklären kann man sich das auch in etwa so: Der Compiler muss schauen, was er vor sich hat und was nicht. Wenn der Compiler ein new int[5] findet, dann ist dies schon eindeutig für ihn: Eine "array creation expression" liegt vor. Daher meckert er, dass die "{" unerwartet ist - er hätte da gerne einen Abschluss mit einem ";".
Wenn der Compiler aber keine Größe hat, dann weiss er: Eine array creation expression ist es nicht und schaut weiter. Er erwartet also kein ";" sondern sieht mit der { dann den array initializer.
ahh verstehe vielen dank😛
 
Sogar noch stärker: Man darf dann keine Größe mehr angeben.

Aus Sicht der Java Spezifikation sind das zwei unterschiedliche Ausdrücke:
  • nur die reine Erstellung mit new ist eine "Array Creation Expression" (Da muss für mindestens die erste Dimension eine Größe angegeben werden.)
  • Die Initialisierung ist ein "Array Initializer"
(Die jeweiligen Kapitel und Links habe ich mal weggelassen)

Du kannst es also ausprobieren: Mit Größe wird der Compiler den Ausdruck nicht mögen. Erklären kann man sich das auch in etwa so: Der Compiler muss schauen, was er vor sich hat und was nicht. Wenn der Compiler ein new int[5] findet, dann ist dies schon eindeutig für ihn: Eine "array creation expression" liegt vor. Daher meckert er, dass die "{" unerwartet ist - er hätte da gerne einen Abschluss mit einem ";".
Wenn der Compiler aber keine Größe hat, dann weiss er: Eine array creation expression ist es nicht und schaut weiter. Er erwartet also kein ";" sondern sieht mit der { dann den array initializer.
Wollte gerade mal eine ArrayList direkt mit werten befüllen, das ging aber nicht, gibt es dafür auch einen weg?
 
Wollte gerade mal eine ArrayList direkt mit werten befüllen, das ging aber nicht, gibt es dafür auch einen weg?
Du kannst eine List erstellen mit List.of(......). Das ist aber dann nicht eine ArrayList. Wenn es zwingend eine ArrayList sein muss, dann kannst Du aber den Konstruktor nutzen, der Elemente in einer Collection entgegen nimmt. Also etwas wie:
new ArrayList<>(List.of(......));
 

Zurück
Oben