Einleitung: Warum quält diese Frage selbst erfahrene Java-Entwickler?
\n\nWenn Sie jemals gegoogelt haben „How do I declare and initialize an array in Java?“, sind Sie nicht allein. Diese Frage auf Stack Overflow hat Hunderttausende von Aufrufen gesammelt und wächst weiter. Man sollte meinen, was ist daran so schwer? Aber der Teufel steckt, wie immer, im Detail. Java ist eine stark typisierte Sprache, und die Syntax für Arrays kann Anfänger verwirren.
\n\nIn diesem Artikel analysieren wir alle möglichen Methoden zur Deklaration und Initialisierung von Arrays in Java. Sie erfahren, worin sich int[] arr von int arr[] unterscheidet, wie man Objektarrays korrekt erstellt und wie Sie der Falle NullPointerException entgehen. Los geht's!
1. Grundlagen: Was ist ein Array in Java?
\n\nEin Array in Java ist ein Container, der eine festgelegte Anzahl von Elementen eines Typs speichert. Im Gegensatz zu Python oder JavaScript, wo Arrays dynamisch sein können, wird die Größe eines Arrays in Java bei der Erstellung festgelegt und kann nicht geändert werden.
\n\nint[] numbers; // Deklaration (declaration)\nnumbers = new int[5]; // Initialisierung (initialization) – Speicherzuweisung für 5 Elemente\n\n\nIn der ersten Zeile teilen wir dem Compiler mit: „Ich möchte eine Variable erstellen, die auf ein Array von ganzen Zahlen verweist.“ In der zweiten Zeile weisen wir Speicher für 5 Elemente zu. Erst danach ist das Array einsatzbereit.
\n\n2. Methoden zur Array-Deklaration
\n\nIn Java gibt es zwei Syntaxen für die Array-Deklaration. Beide sind gültig, aber die Java-Community (und die offiziellen Codierungsstandards von Oracle) empfehlen die erste Variante.
\n\nMethode 1: Datentyp + eckige Klammern vor dem Variablennamen
\nint[] myArray;\nString[] names;\ndouble[] prices;\n\n\nMethode 2: Eckige Klammern nach dem Variablennamen (C/C++-Stil)
\nint myArray[];\nString names[];\ndouble prices[];\n\n\nWelche sollten Sie wählen? Die erste Variante liest sich natürlicher: int[] myArray – „Array von ganzen Zahlen mit dem Namen myArray“. Die zweite Variante kann verwirrend sein, besonders wenn Sie mehrere Variablen in einer Zeile deklarieren:
int[] arr1, arr2; // beide Variablen sind Arrays\nint arr3[], arr4; // arr3 ist ein Array, arr4 ist eine normale ganze Zahl (Fehler!)\n\n\nVerwenden Sie daher immer Typ[] Name.
3. Array-Initialisierung: 4 bewährte Methoden
\n\nNach der Deklaration muss das Array initialisiert werden. So machen Sie es richtig.
\n\nMethode 1: Erstellen eines leeren Arrays mit Angabe der Größe
\nint[] numbers = new int[10]; // Array mit 10 Elementen, alle standardmäßig 0\nString[] words = new String[5]; // Array mit 5 Strings, alle standardmäßig null\n\n\nDiese Methode eignet sich, wenn Sie das Array später füllen möchten (z. B. in einer Schleife). Wichtig zu beachten: Bei numerischen Typen ist der Standardwert 0, bei boolean ist es false, bei Referenztypen ist es null.
Methode 2: Initialisierung mit einem Array-Literal
\nint[] numbers = {1, 2, 3, 4, 5};\nString[] fruits = {"apple", "banana", "orange"};\n\n\nDies ist die kürzeste und bequemste Methode, wenn Sie alle Elemente im Voraus kennen. Beachten Sie: Diese Syntax funktioniert nur bei der Deklaration.
\n\nMethode 3: Anonymes Array (ohne Variablennamen)
\nint[] numbers = new int[]{1, 2, 3, 4, 5};\n\n\nDiese Variante ist nützlich, wenn Sie ein Array an eine Methode übergeben müssen, ohne eine separate Variable zu erstellen:
\n\nprintArray(new int[]{10, 20, 30});\n\n\nMethode 4: Initialisierung über eine Schleife
\nint[] squares = new int[10];\nfor (int i = 0; i < squares.length; i++) {\n squares[i] = (i + 1) * (i + 1);\n}\n\n\nIdeal für dynamische Befüllung, z. B. zur Berechnung von Werten oder zum Lesen von Daten aus einer Datei.
\n\n