{"id":40011,"date":"2024-04-09T03:00:00","date_gmt":"2024-04-09T01:00:00","guid":{"rendered":"https:\/\/www.happycoders.eu\/?p=40011"},"modified":"2025-06-12T08:41:53","modified_gmt":"2025-06-12T06:41:53","slug":"arrays-in-java-initialisieren","status":"publish","type":"post","link":"https:\/\/www.happycoders.eu\/de\/java\/arrays-in-java-initialisieren\/","title":{"rendered":"Arrays in Java initialisieren"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In diesem Artikel lernst du verschiedenste M\u00f6glichkeiten kennen, <\/p>\n\n\n\n<ul class=\"wp-block-list hc-checked-list\">\n<li>wie man in Java Arrays deklariert und initialisiert, <\/li>\n\n\n\n<li>wie man sie mit Werten f\u00fcllt, <\/li>\n\n\n\n<li>wie man sie kopiert<\/li>\n\n\n\n<li>und wie man Collections und Streams in Arrays umwandelt.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Au\u00dferdem erf\u00e4hrst du, was die Besonderheiten bei mehrdimensionalen Arrays in Java sind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"arrays-in-java-deklarieren-und-initialisieren\">Arrays in Java deklarieren und initialisieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Wir beginnen mit den wohl h\u00e4ufigsten Operationen, der Array-Deklaration und der Array-Initialisierung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"arrays-in-java-deklarieren\">Arrays in Java deklarieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Deklaration einer Variable ist der Zeitpunkt, zu dem wir die Variable zusammen mit ihrem Typ dem Compiler bekanntmachen. Die folgenden zwei Zeilen zeigen die Deklaration eines int-Arrays und eines String-Arrays:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray;\nString&#091;] stringArray;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Bei der Deklaration geben wir noch nicht die Gr\u00f6\u00dfe des Arrays an. Die Array-Variablen (im Beispiel <code>intArray<\/code> und <code>stringArray<\/code>) enthalten nicht das Array selbst, sondern eine Referenz auf ein Array, das letztendlich ein Objekt auf dem Java-Heap ist. Erst wenn wir dieses eigentliche Array-Objekt erzeugen, m\u00fcssen wir die Gr\u00f6\u00dfe festlegen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der Array-Deklaration d\u00fcrfen die eckigen Klammern auch <em>nach dem Variablennamen<\/em> stehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span> intArray&#091;];\nString stringArray&#091;];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dieser Stil wurde aus der Programmiersprache C \u00fcbernommen. Alle Java-Style-Guides pr\u00e4ferieren jedoch den zuerst gezeigten Stil, also mit den Klammern nach dem Typ und vor dem Namen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-array-mit-werten-initialisieren\">Java-Array mit Werten initialisieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wir k\u00f6nnen ein Array bei der Deklaration auch gleich mit Werten initialisieren. Die folgende Code-Zeile zeigt, wie wir ein int-Array initialisieren k\u00f6nnen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] winningNumbers = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Und so k\u00f6nnen wir z. B. ein String-Array initialisieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">String&#091;] fruits = <span class=\"hljs-keyword\">new<\/span> String&#091;]{<span class=\"hljs-string\">\"cherry\"<\/span>, <span class=\"hljs-string\">\"papaya\"<\/span>, <span class=\"hljs-string\">\"huckleberry\"<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Da in den vorangegangenen zwei Beispielen der Variablentyp (<code>int<\/code> bzw. <code>String<\/code>) in der Zuweisung wiederholt wird, k\u00f6nnen wir den vorangestellten Typ auch durch <code>var<\/code> ersetzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">var<\/span> winningNumbers = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\n<span class=\"hljs-keyword\">var<\/span> fruits = <span class=\"hljs-keyword\">new<\/span> String&#091;]{<span class=\"hljs-string\">\"cherry\"<\/span>, <span class=\"hljs-string\">\"papaya\"<\/span>, <span class=\"hljs-string\">\"huckleberry\"<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Alternativ d\u00fcrfen wir auch das Keword <code>new<\/code> und die zweiten Typangabe weglassen, dann muss allerdings die erste Typangabe stehen bleiben und darf nicht durch <code>var<\/code> ersetzt werden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] winningNumbers = {<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\nString&#091;] fruits = {<span class=\"hljs-string\">\"cherry\"<\/span>, <span class=\"hljs-string\">\"papaya\"<\/span>, <span class=\"hljs-string\">\"huckleberry\"<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Auch bei der kombinierten Deklaration und Initialisierung d\u00fcrfen im C-Stil die eckigen Klammern nach dem Variablennamen stehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span> winningNumbers&#091;] = {<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\nString fruits&#091;] = {<span class=\"hljs-string\">\"cherry\"<\/span>, <span class=\"hljs-string\">\"papaya\"<\/span>, <span class=\"hljs-string\">\"huckleberry\"<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"array-deklaration-und-initialisierung-separieren\">Array-Deklaration und -Initialisierung separieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Erzeugung eines Arrays mit Festlegung aller Array-Elemente kann auch jederzeit nach der Deklaration erfolgen.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] winningNumbers;\n<span class=\"hljs-comment\">\/\/ . . .<\/span>\nwinningNumbers = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\n\nString&#091;] fruits;\n<span class=\"hljs-comment\">\/\/ . . .<\/span>\nfruits = <span class=\"hljs-keyword\">new<\/span> String&#091;]{<span class=\"hljs-string\">\"cherry\"<\/span>, <span class=\"hljs-string\">\"papaya\"<\/span>, <span class=\"hljs-string\">\"huckleberry\"<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Das ist allerdings nur mit dem Keyword <code>new<\/code> m\u00f6glich. Die Variante ohne <code>new<\/code> ist nur bei der im vorherigen Abschnitt gezeigten kombinierten Deklaration und Initialisierung zul\u00e4ssig. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"leeres-array-initialisieren\">Leeres Array initialisieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bei allen bisherigen Beispielen haben wir konkrete Werte vorgegeben, die das Array enthalten soll.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Statt ein Array mit konkreten Werten zu definieren, k\u00f6nnen wir ein Array auch zun\u00e4chst nur mit der Angabe einer Gr\u00f6\u00dfe initialisieren (s. auch Artikel <a href=\"\/de\/java\/array-laenge-java\/\">Array-L\u00e4nge in Java<\/a>), so z. B. ein Array mit zehn <code>int<\/code>-Elementen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">10<\/span>];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die Anweisung <code>new int[10]<\/code> erzeugt ein neues <code>int<\/code>-Array mit zehn Elementen. Alle Elemente werden dabei auf den Standardwert 0 gesetzt. Das Kommando hat damit denselben Effekt wie folgendes:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = {<span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Auch diese Art der Initialisierung k\u00f6nnten wir von der Deklaration trennen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray;\n<span class=\"hljs-comment\">\/\/ . . .<\/span>\nintArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">10<\/span>];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die verschiedenen Array-Typen haben folgende Standardwerte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>F\u00fcr die Ganzzahlen <code>byte<\/code>, <code>short<\/code>, <code>int<\/code> und <code>long<\/code> ist der Default-Wert 0.<\/li>\n\n\n\n<li>F\u00fcr die Gleitkommazahlen <code>float<\/code> und <code>double<\/code> ist der Default-Wert 0,0.<\/li>\n\n\n\n<li>F\u00fcr <code>char<\/code> ist der Default-Wert das Unicode-Zeichen \"NULL\" (U+0000).<\/li>\n\n\n\n<li>Und f\u00fcr alle Objekt-Arrays ist der Default <code>null<\/code>.<\/li>\n<\/ul>\n\n\n<div class=\"convertkit-form wp-block-convertkit-form\" style=\"\"><script async data-uid=\"1427197203\" src=\"https:\/\/happycoders.kit.com\/1427197203\/index.js\" data-jetpack-boost=\"ignore\" data-no-defer=\"1\" data-no-optimize=\"1\" nowprocket><\/script><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"array-mit-werten-fuellen\">Array mit Werten f\u00fcllen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nachdem wir ein Array erzeugt haben (egal auf welche der zuvor gezeigten Arten), k\u00f6nnen wir es mit Werten f\u00fcllen, dazu gibt es verschiedene M\u00f6glichkeiten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"einzelne-array-elemente-setzen\">Einzelne Array-Elemente setzen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn wir beispielsweise ein <code>int<\/code>-Array angelegt haben, k\u00f6nnen wir es Element f\u00fcr Element bef\u00fcllen, z. B. mit dem Quadrat des jeweiligen Indexes:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">11<\/span>];\n<span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">int<\/span> i = <span class=\"hljs-number\">0<\/span>; i &lt; intArray.length; i++) {\n  intArray&#091;i] = i * i;\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dieses Array hat dann den folgenden Inhalt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">&#091;0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"alle-array-elemente-auf-den-gleichen-wert-setzen-arrays-fill\">Alle Array-Elemente auf den gleichen Wert setzen: Arrays.fill()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00dcber die <code>Arrays.fill()<\/code>-Methode k\u00f6nnen wir ein Array mit einheitlichen Werten f\u00fcllen. Der folgende Code setzt jedes Element des Arrays auf 99:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">10<\/span>];\nArrays.fill(intArray, <span class=\"hljs-number\">99<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dieses Array sieht dann wie folgt aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">&#091;99, 99, 99, 99, 99, 99, 99, 99, 99, 99]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Es gibt noch eine zweite, \u00fcberladene <code>fill()<\/code>-Methode mit zus\u00e4tzlichen Parametern, \u00fcber die man den zu f\u00fcllenden Bereich festlegen kann. Der folgende Code z. B. f\u00fcllt die ersten 5 Felder mit der 11 und die letzten 5 Felder mit der 77:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">10<\/span>];\nArrays.fill(intArray, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">11<\/span>);\nArrays.fill(intArray, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">77<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dieses Array sieht dann wie folgt aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">&#091;11, 11, 11, 11, 11, 77, 77, 77, 77, 77]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"array-mit-berechneten-werten-fuellen-arrays-setall\">Array mit berechneten Werten f\u00fcllen: Arrays.setAll()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Im Abschnitt \u201e<a href=\"#einzelne-array-elemente-setzen\">Einzelne Array-Elemente setzen<\/a>\u201d habe ich dir Code gezeigt, der ein Array mittels einer Schleife mit Quadratzahlen bef\u00fcllt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das k\u00f6nnen wir auch einfacher programmieren, und zwar mit der Methode <code>Arrays.setAll()<\/code>. Dieser Methode \u00fcbergeben wir das Array sowie eine Lambda-Funktion, die den Wert eines Feldes anhand seines Indexes berechnet:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">11<\/span>];\nArrays.setAll(intArray, i -&gt; i * i);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die Verwendung von <code>setAll()<\/code> macht es besonders einfach, die Verarbeitung zu parallelisieren. Wir m\u00fcssen dazu lediglich <code>setAll()<\/code> durch <code>parallelSetAll()<\/code> ersetzen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">11<\/span>];\nArrays.parallelSetAll(intArray, i -&gt; i * i);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Intern verwendet die Methode einen parallelen Stream und damit den gemeinsamen ForkJoinPool. Da die Berechnungsmethode statuslos ist, kann die Performance hier nahezu linear mit der Anzahl der CPU-Kerne skalieren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"java-array-kopieren\">Java-Array kopieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt verschiedene Methoden in Java, um ein bestehendes Array zu kopieren. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"primitive-arrays-kopieren-mit-clone\">Primitive Arrays kopieren mit clone()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die einfachsten Art ein Array zu kopieren ist die <code>clone()<\/code>-Methode:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = {<span class=\"hljs-number\">6<\/span>, <span class=\"hljs-number\">11<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">7<\/span>, <span class=\"hljs-number\">44<\/span>, <span class=\"hljs-number\">7<\/span>, <span class=\"hljs-number\">4<\/span>};\n<span class=\"hljs-keyword\">int<\/span>&#091;] copy = intArray.clone();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dadurch entsteht ein zweites Array, das unabh\u00e4ngig vom ersten Array ver\u00e4ndert werden kann. Wir k\u00f6nnen jetzt Werte in beiden Arrays \u00e4ndern:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">intArray&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-number\">999<\/span>;\ncopy&#091;<span class=\"hljs-number\">2<\/span>] = <span class=\"hljs-number\">88<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Das f\u00fchrt dazu, das beide Arrays einen unterschiedlichen Inhalt haben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">intArray: &#091;6, 999, 5, 7, 44, 7, 4]\ncopy:     &#091;6, 11, 88, 7, 44, 7, 4]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Grafisch kannst du dir das wie folgt vorstellen (dies ist lediglich eine symbolische Darstellung, die nur den Inhalt der Arrays wiederspiegelt \u2013 tats\u00e4chlich haben Arrays intern auch noch einen <a href=\"https:\/\/www.happycoders.eu\/de\/java\/object-headers-compressed-class-pointers\/\">Objekt-Header<\/a> und ein Feld, in dem ihre Gr\u00f6\u00dfe gespeichert ist):<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"108\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-600x108.png\" alt=\"Java-Array &quot;intArray&quot; und das geklonte Array &quot;copy&quot;\" class=\"wp-image-40070\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-600x108.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-224x40.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-336x60.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-504x91.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-672x121.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-400x72.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-800x144.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4-944x170.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-array-clone.v4.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Anders sieht es bei Objekt-Arrays aus...<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"objekt-arrays-kopieren-mit-clone\">Objekt-Arrays kopieren mit clone()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn wir mit einem Objekt-Array arbeiten, m\u00fcssen wir beachten, dass nur die <em>Referenzen<\/em> auf die Objekte kopiert werden, nicht die Objekte selbst.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im folgenden Beispiel kopieren wir ein Array von <code>StringBuilder<\/code>-Objekten, \u00e4ndern dann die Werte eines <code>StringBuilder<\/code>-Objekts im ersten Array und geben beide Arrays aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-24\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">StringBuilder&#091;] fruits = {\n    <span class=\"hljs-keyword\">new<\/span> StringBuilder(<span class=\"hljs-string\">\"cherry\"<\/span>),\n    <span class=\"hljs-keyword\">new<\/span> StringBuilder(<span class=\"hljs-string\">\"papaya\"<\/span>),\n    <span class=\"hljs-keyword\">new<\/span> StringBuilder(<span class=\"hljs-string\">\"huckleberry\"<\/span>)\n};\n\nStringBuilder&#091;] copy = fruits.clone();\n\nfruits&#091;<span class=\"hljs-number\">1<\/span>].reverse();\n\nSystem.out.println(<span class=\"hljs-string\">\"fruits: \"<\/span> + Arrays.toString(fruits));\nSystem.out.println(<span class=\"hljs-string\">\"copy:   \"<\/span> + Arrays.toString(copy));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-24\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In der Ausgabe wirst du das umgekehrte Wort \u201eayapap\u201d an der mittleren Position in beiden Arrays sehen. Das liegt daran, dass nicht das <code>StringBuilder<\/code>-<em>Objekt<\/em> kopiert wurde, sondern nur ein Pointer. D. h. beide Arrays enthalten einen Pointer auf ein- und dasselbe <code>StringBuilder<\/code>-Objekt:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"199\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-600x199.png\" alt=\"Java-Array &quot;fruits&quot; und das geklonte Array &quot;copy&quot;\" class=\"wp-image-40071\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-600x199.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-224x74.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-336x111.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-504x167.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-672x223.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-400x133.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-800x265.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2-944x313.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone.v2.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Wenn du ein Objekt in nur einem Array \u00e4ndern m\u00f6chtest, dann musst du es ersetzen, in dem du ein neues Objekt, z. B. einen neuen <code>StringBuilder<\/code> zuweist. H\u00e4ngen wir einmal die folgenden Zeilen an den Code von oben an:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-25\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">copy&#091;<span class=\"hljs-number\">2<\/span>] = <span class=\"hljs-keyword\">new<\/span> StringBuilder(<span class=\"hljs-string\">\"tomato\"<\/span>);\n\nSystem.out.println(<span class=\"hljs-string\">\"fruits: \"<\/span> + Arrays.toString(fruits));\nSystem.out.println(<span class=\"hljs-string\">\"copy:   \"<\/span> + Arrays.toString(copy));\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-25\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dann wirst du folgende Ausgabe sehen \u2013 <code>tomato<\/code> befindet sich nun ausschlie\u00dflich im geklonten Array:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-26\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">fruits: &#091;cherry, ayapap, huckleberry]\ncopy:   &#091;cherry, ayapap, tomato]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-26\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Grafisch kannst du dir das wie folgt vorstellen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"279\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-600x279.png\" alt=\"Java-Array &quot;fruits&quot; und das geklonte und modifizierte Array &quot;copy&quot;\" class=\"wp-image-40072\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-600x279.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-224x104.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-336x156.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-504x234.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-672x312.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-400x186.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-800x372.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2-944x439.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-object-array-clone-and-modify.v2.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Die <code>StringBuilder<\/code> mit den Inhalten \u201echerry\u201d und \u201eayapap\u201d sind von beiden Arrays referenziert, der <code>StringBuilder<\/code> mit dem Inhalt \u201ehuckleberry\u201d ist nur vom <code>fruits<\/code>-Array referenziert, und der <code>StringBuilder<\/code> mit dem Inhalt \u201etomato\u201d ist nur vom <code>copy<\/code>-Array referenziert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"system-arraycopy\">System.arraycopy()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Manchmal wollen wir nicht das komplette Array kopieren, sondern nur einen Teil davon. Daf\u00fcr k\u00f6nnen wir die Low-Level-Methode <code>System.arraycopy()<\/code> zu Hilfe nehmen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nehmen wir an, wir wollen die mittleren drei Gewinnzahlen in ein anderes Array kopieren. Dann erzeugen wir zuerst ein Ziel-Array der Gr\u00f6\u00dfe drei:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-27\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] winningNumbers = {<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\n<span class=\"hljs-keyword\">int<\/span>&#091;] middleThree = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">3<\/span>];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-27\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Und dann rufen wir wie folgt <code>System.arraycopy()<\/code> auf und geben das Ergebnis aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-28\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">System.arraycopy(winningNumbers, <span class=\"hljs-number\">2<\/span>, middleThree, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">3<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-28\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die Methode hat die folgenden Parameter:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Quell-Array<\/li>\n\n\n\n<li>Start-Position im Quell-Array<\/li>\n\n\n\n<li>Ziel-Array<\/li>\n\n\n\n<li>Start-Position im Ziel-Array<\/li>\n\n\n\n<li>Anzahl der zu kopierenden Elemente<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgende Grafik zeigt noch einmal die Bedeutungen der Parameter:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full_800\"><img decoding=\"async\" width=\"800\" height=\"318\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-800x318.png\" alt=\"Java System.arraycopy()\" class=\"wp-image-40077\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-800x318.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-224x89.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-336x134.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-504x200.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-672x267.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-400x159.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-600x239.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-944x375.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy-1200x477.png 1200w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/system.arraycopy.png 1600w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Wir k\u00f6nnen nun das Ergebnis des Kopiervorgangs ausgeben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-29\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">System.out.println(<span class=\"hljs-string\">\"middleThree: \"<\/span> + Arrays.toString(middleThree));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-29\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Und wir sollten, passend zur Grafik oben, die folgende Ausgabe sehen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-30\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">middleThree: &#091;29, 32, 45]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-30\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"arrays-copyof\">Arrays.copyOf()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Umgang mit <code>System.arraycopy()<\/code> ist etwas m\u00fchsam. Daher gibt es in der Klasse <code>java.util.Arrays<\/code> einige Hilfsmethoden, die das Kopieren erleichtern.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit der Methode <code>Arrays.copyOf()<\/code> k\u00f6nnen wir das komplette Array oder Teile des Arrays kopieren. Der folgende Code kopiert das vollst\u00e4ndige Array:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-31\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] winningNumbers = {<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\n<span class=\"hljs-keyword\">int<\/span>&#091;] copy = Arrays.copyOf(winningNumbers, winningNumbers.length);\nSystem.out.println(<span class=\"hljs-string\">\"copy = \"<\/span> + Arrays.toString(copy));\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-31\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Der zweite Parameter gibt dabei die gew\u00fcnschte L\u00e4nge des Ziel-Arrays an. Wenn du dir <a href=\"https:\/\/github.com\/openjdk\/jdk\/blob\/jdk-22%2B36\/src\/java.base\/share\/classes\/java\/util\/Arrays.java#L3590\" target=\"_blank\" rel=\"noopener\">den Quellcode der Methode <code>Arrays.copyOf()<\/code><\/a> anschaust, wirst du sehen, dass diese einfach <code>clone()<\/code> aufruft, wenn der zweite Parameter der L\u00e4nge des Quell-Arrays gleicht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn du als zweiten Parameter eine k\u00fcrzere L\u00e4nge angibst, ist die Kopie entsprechend k\u00fcrzer als das Original:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-32\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] firstThree = Arrays.copyOf(winningNumbers, <span class=\"hljs-number\">3<\/span>);\nSystem.out.println(<span class=\"hljs-string\">\"firstThree = \"<\/span> + Arrays.toString(firstThree));\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-32\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Dieser Code gibt folgendes aus \u2013 das Ziel-Array enth\u00e4lt also die ersten drei Zahlen des Quell-Arrays:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-33\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">firstThree = &#091;14, 17, 29]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-33\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Im Quellcode von <code>Arrays.copyOf()<\/code> wirst du sehen, dass in diesem Fall zun\u00e4chst ein neues Array der gew\u00fcnschten Gr\u00f6\u00dfe erzeugt wird und dann mit <code>System.arraycopy()<\/code> die gew\u00fcnschten Elemente aus dem Quell-Array in das Ziel-Array kopiert werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Du kannst auch einen Wert angeben der gr\u00f6\u00dfer ist als die L\u00e4nge des Quell-Arrays:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-34\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] longerArray = Arrays.copyOf(winningNumbers, <span class=\"hljs-number\">10<\/span>);\nSystem.out.println(<span class=\"hljs-string\">\"longerArray = \"<\/span> + Arrays.toString(longerArray));\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-34\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In diesem Fall werden die restlichen Felder des Ziel-Arrays mit Default-Werten (also Nullen) aufgef\u00fcllt sein, und du erh\u00e4lst folgendes Ergebnis:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-35\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">longerArray = &#091;14, 17, 29, 32, 45, 1, 2, 0, 0, 0]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-35\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"arrays-copyofrange\">Arrays.copyOfRange()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um einen weiter hinten liegenden Teil aus dem Array zu kopieren, k\u00f6nnen wir <code>Arrays.copyOfRange()<\/code> verwenden. Der folgende Code kopiert die mittleren drei Elemente, so wie wir es oben mit <code>System.arraycopy()<\/code> gemacht haben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-36\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] winningNumbers = {<span class=\"hljs-number\">14<\/span>, <span class=\"hljs-number\">17<\/span>, <span class=\"hljs-number\">29<\/span>, <span class=\"hljs-number\">32<\/span>, <span class=\"hljs-number\">45<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>};\n<span class=\"hljs-keyword\">int<\/span>&#091;] middleThree = Arrays.copyOfRange(winningNumbers, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">5<\/span>);\nSystem.out.println(<span class=\"hljs-string\">\"middleThree = \"<\/span> + Arrays.toString(middleThree));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-36\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Als Parameter gibst du neben dem Quell-Array die Start- und End-Position (nicht die L\u00e4nge!) des zu kopierenden Bereichs an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn du in den <a href=\"https:\/\/github.com\/openjdk\/jdk\/blob\/jdk-22%2B36\/src\/java.base\/share\/classes\/java\/util\/Arrays.java#L3924\" target=\"_blank\" rel=\"noopener\">Quellcode von <code>copyOfRange()<\/code><\/a> schaust, wirst du feststellen, dass auch diese Methode auf <code>clone()<\/code> und <code>System.arraycopy()<\/code> zur\u00fcckgreift.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"arrays-aus-anderen-datenstrukturen-erzeugen\">Arrays aus anderen Datenstrukturen erzeugen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Falls du Daten in einer Collection wie einer Liste oder einem Set hast, kannst du diese mit der <code>toArray()<\/code>-Methode in ein Array kopieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"liste-in-array-konvertieren-list-toarray\">Liste in Array konvertieren: List.toArray()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das folgende Beispiel zeigt vier Wege, wie du eine String-Liste in ein String-Array konvertieren kannst:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-37\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">List&lt;String&gt; fruits = List.of(<span class=\"hljs-string\">\"honeydew\"<\/span>, <span class=\"hljs-string\">\"dragonfruit\"<\/span>, <span class=\"hljs-string\">\"boysenberry\"<\/span>);\nObject&#091;] array1 = fruits.toArray();\nString&#091;] array2 = fruits.toArray(<span class=\"hljs-keyword\">new<\/span> String&#091;fruits.size()]);\nString&#091;] array3 = fruits.toArray(<span class=\"hljs-keyword\">new<\/span> String&#091;<span class=\"hljs-number\">0<\/span>]);\nString&#091;] array4 = fruits.toArray(String&#091;]::<span class=\"hljs-keyword\">new<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-37\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Bei der ersten Variante ohne Parameter ist der R\u00fcckgabewert ein <code>Object<\/code>-Array. Das liegt daran, dass Collections wie Listen und Sets zur Laufzeit aufgrund der sogenannten <a href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/java\/generics\/erasure.html\" target=\"_blank\" rel=\"noopener\">Type Erasure<\/a> keine Typinformationen enthalten und damit aus Sicht der JVM beliebige Objekte enthalten k\u00f6nnen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der zweiten Variante \u00fcbergeben wir ein neues Array des gew\u00fcnschten Typs mit der ben\u00f6tigten Gr\u00f6\u00dfe. Die <code>toArray()<\/code>-Methode kopiert dann die Elemente der Liste in dieses Array.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der dritten Variante \u00fcbergeben wir ein neues Array des gew\u00fcnschten Typs der L\u00e4nge 0. Die <code>toArray()<\/code>-Methode erzeugt dann ein neues Array der ben\u00f6tigten Gr\u00f6\u00dfe und kopiert die Elemente in dieses Array.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bei der vierten Methode \u00fcbergeben wir eine Referenz auf den Array-Konstruktor. Die <code>Collection.toArray()<\/code>-Methode ruft diesen Konstruktor mit dem Parameter 0 auf, erzeugt also ein Array der L\u00e4nge 0 und ruft dann wiederum die dritte Methode auf.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aleksey Shipil\u0451v hat auf seinem Blog <a href=\"https:\/\/shipilev.net\/blog\/2016\/arrays-wisdom-ancients\/\" target=\"_blank\" rel=\"noopener\">die Performance der verschiedenen Varianten von <code>Collection.toArray()<\/code> verglichen<\/a> und ist zu dem Ergebnis gekommen, dass die erste Variante, also die, die ein <code>Object<\/code>-Array zur\u00fcckliefert, die schnellste ist. Von den Varianten, die ein Array des Ziel-Typs zur\u00fcckliefern, sind die Varianten drei und vier am schnellsten. Dies ist kontraintuitiv, da dabei zwei Arrays erstellt werden (erst eines der L\u00e4nge 0, danach eines der erforderlichen L\u00e4nge). Warum die \u00dcbergabe eines Arrays der L\u00e4nge 0 trotzdem schneller ist als die \u00dcbergabe eines Arrays der passenden Gr\u00f6\u00dfe, kannst du in dem oben verlinkten Artikel nachlesen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die zweite Variante kann au\u00dferdem zu einer Race Condition f\u00fchren: Bei einer threadsicheren Collection, deren Gr\u00f6\u00dfe von einem anderen Thread nach dem Aufruf von <code>size()<\/code> und vor dem Aufruf von <code>toArray()<\/code> ge\u00e4ndert wird, w\u00fcrde <code>toArray()<\/code> ein Array mit der alten statt der neuen L\u00e4nge zur\u00fcckgeben \u2013 das Array w\u00fcrde also abgeschnitten oder mit Nullen aufgef\u00fcllt sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ich empfehle immer die vierte Variante, also die mit dem Konstruktor-Parameter, einzusetzen, da diese in Zukunft optimiert werden k\u00f6nnte.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"set-in-array-konvertieren-set-toarray\">Set in Array konvertieren: Set.toArray()<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Du kannst die oben gezeigten <code>toArray()<\/code>-Aufrufe unver\u00e4ndert verwenden, um auch ein <code>Set<\/code> in ein Array zu konvertieren:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-38\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">Set&lt;String&gt; fruits = Set.of(<span class=\"hljs-string\">\"honeydew\"<\/span>, <span class=\"hljs-string\">\"dragonfruit\"<\/span>, <span class=\"hljs-string\">\"boysenberry\"<\/span>);\nObject&#091;] array1 = fruits.toArray();\nString&#091;] array2 = fruits.toArray(<span class=\"hljs-keyword\">new<\/span> String&#091;fruits.size()]);\nString&#091;] array3 = fruits.toArray(<span class=\"hljs-keyword\">new<\/span> String&#091;<span class=\"hljs-number\">0<\/span>]);\nString&#091;] array4 = fruits.toArray(String&#091;]::<span class=\"hljs-keyword\">new<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-38\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wenn das Set eine definierte Iterations-Reihenfolge hat (wie z. B. ein <code>TreeSet<\/code>), dann garantieren die <code>Set.toArray()<\/code>-Methoden, dass die Elemente in Iterations-Reihenfolge in das Array kopiert werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch hier gilt meine Empfehlung, immer die vierte Variante einzusetzen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"array-aus-einem-objekt-stream-erzeugen\">Array aus einem Objekt-Stream erzeugen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht nur Collections, sondern auch Streams haben <code>toArray()<\/code>-Methoden. Wir beginnen analog zu den Collections mit den generischen Objekt-Streams. Der folgende Code zeigt zwei Varianten, wie man einen String-Stream in ein Array umwandeln kann. Beachte, dass ein Stream nur einmal konsumiert, also auch nur einmal in ein Array umgewandelt werden darf \u2013 daher m\u00fcssen wir f\u00fcr dieses Beispiel zwei Streams erzeugen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-39\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">Stream&lt;String&gt; stream1 = Stream.of(<span class=\"hljs-string\">\"mango\"<\/span>, <span class=\"hljs-string\">\"tomato\"<\/span>, <span class=\"hljs-string\">\"coconut\"<\/span>);\nObject&#091;] objects = stream1.toArray();\n\nStream&lt;String&gt; stream2 = Stream.of(<span class=\"hljs-string\">\"cherry\"<\/span>, <span class=\"hljs-string\">\"date\"<\/span>, <span class=\"hljs-string\">\"raspberry\"<\/span>);\nString&#091;] strings = stream2.toArray(String&#091;]::<span class=\"hljs-keyword\">new<\/span>);\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-39\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Hier gibt es nur zwei Varianten, n\u00e4mlich die, die wir bei den Collections zuvor als Variante 1 und Variante 4 kennengelernt haben:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>eine Variante ohne Typangabe, bei der nur ein Object-Array zur\u00fcckgegeben werden kann, <\/li>\n\n\n\n<li>und eine Variante mit einer Referenz auf den Konstruktor f\u00fcr den gew\u00fcnschten Array-Typ.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Variante, der ein Array des gew\u00fcschten Typs \u00fcbergeben wird, existiert hier nicht. Dies deckt sich mit meiner Empfehlung, die Varianten 2 und 3 nicht f\u00fcr Collections zu verwenden. Warum gibt es diese Varianten dann bei Collections? Aus historischen Gr\u00fcnden: Als das Collections-Framework 1998 in Java 1.2 eingef\u00fchrt wurde, gab es noch keine Methodenreferenzen, wie sie f\u00fcr die \u00dcbergabe des Konstruktors in Variante 4 ben\u00f6tigt werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"array-aus-einem-primitiven-stream-erzeugen\">Array aus einem primitiven Stream erzeugen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Im Gegensatz zu Collections gibt es bei Streams auch primitive Varianten, n\u00e4mlich <code>IntStream<\/code>, <code>LongStream<\/code> und <code>DoubleStream<\/code>. Primitive Streams bieten nur eine einzige <code>toArray()<\/code>-Methode an. Da der Typ hier immer bekannt ist, ist eine Angabe des Typs nicht erforderlich.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der folgende Code erstellt ein <code>int<\/code>-Array mit den Werten 1 bis 10, ein <code>long<\/code>-Array mit einer Zahlenfolge, die bei 1 beginnt und sich verdoppelt, solange der Wert unter 2.000 bleibt, und ein <code>double<\/code>-Array mit einer Zahlenfolge, die bei 1,0 beginnt und halbiert wird, bis insgesamt 8 Elemente erstellt wurden:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-40\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] intArray = IntStream.rangeClosed(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">10<\/span>).toArray();\n<span class=\"hljs-keyword\">long<\/span>&#091;] longArray = LongStream.iterate(<span class=\"hljs-number\">1<\/span>, x -&gt; x &lt; <span class=\"hljs-number\">2000<\/span>, x -&gt; x * <span class=\"hljs-number\">2<\/span>).toArray();\n<span class=\"hljs-keyword\">double<\/span>&#091;] doubleArray = DoubleStream.iterate(<span class=\"hljs-number\">1.0<\/span>, x -&gt; x \/ <span class=\"hljs-number\">2.0<\/span>).limit(<span class=\"hljs-number\">8<\/span>).toArray();\n\nSystem.out.println(<span class=\"hljs-string\">\"intArray = \"<\/span> + Arrays.toString(intArray));\nSystem.out.println(<span class=\"hljs-string\">\"longArray = \"<\/span> + Arrays.toString(longArray));\nSystem.out.println(<span class=\"hljs-string\">\"doubleArray = \"<\/span> + Arrays.toString(doubleArray));\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-40\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Der Code gibt folgende Arrays aus:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-41\" data-shcb-language-name=\"Klartext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">intArray = &#091;1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\nlongArray = &#091;1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]\ndoubleArray = &#091;1.0, 0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, 0.0078125]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-41\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Klartext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"2d-arrays-in-java-deklarieren-und-initialisieren\">2D Arrays in Java deklarieren und initialisieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mehrdimensionale Arrays in Java sind nicht wirklich mehrdimensional, sondern Arrays von Arrays. Was das genau bedeutet und wie diese Arrays deklariert und initialisiert werden, zeige ich dir in den n\u00e4chsten Abschnitten am Beispiel von zweidimensionalen Arrays.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"2d-array-in-java-deklarieren\">2D Array in Java deklarieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein zweidimensionales Array deklarierst du wie folgt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-42\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix;\nString&#091;]&#091;] stringMatrix;\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-42\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Genau wie bei den eindimensionalen Arrays geben wir auch hier bei der Deklaration keine Gr\u00f6\u00dfe an. Und auch bei mehrdimensionalen Arrays d\u00fcrfen wir die Klammern im C-Stil nach dem Variablennamen schreiben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-43\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span> intMatrix&#091;]&#091;];\nString stringMatrix&#091;]&#091;];<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-43\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wie auch bei den eindimensionalen Arrays pr\u00e4ferieren alle Java-Styleguides die erste Variante.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"2d-array-in-java-initialisieren\">2D Array in Java initialisieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein zweidimensionales Array kann direkt bei der Deklaration initialisiert werden \u2013 mit <code>new<\/code> gefolgt vom Typ und zwei Paaren aus eckigen Klammern:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-44\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]&#091;]{{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>}, {<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>}};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-44\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wenn wir <code>new<\/code> verwenden, d\u00fcrfen wir am Anfang auch <code>var<\/code> schreiben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-45\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">var<\/span> intMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]&#091;]{{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>}, {<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>}};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-45\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Oder wir lassen <code>new<\/code> mit der Typangabe weg \u2013 dann d\u00fcrfen wir aber nicht <code>var<\/code> verwenden. Das ist die k\u00fcrzeste Variante:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-46\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = {{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>}, {<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>}};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-46\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Nat\u00fcrlich k\u00f6nnen wir auch wieder Deklaration und Initialisierung auf zwei Zeilen aufteilen, m\u00fcssen dann aber in beiden Zeilen den Typ explizit angeben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-47\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix;\nintMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]&#091;]{{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>}, {<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>}};\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-47\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wir k\u00f6nnen auch ein leeres Array erzeugen (genauer gesagt, eines, das nur Nullen enth\u00e4lt) und dann die Felder in einem zweiten Schritt f\u00fcllen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-48\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">2<\/span>]&#091;<span class=\"hljs-number\">3<\/span>];\nintMatrix&#091;<span class=\"hljs-number\">0<\/span>]&#091;<span class=\"hljs-number\">0<\/span>] = <span class=\"hljs-number\">2<\/span>;\nintMatrix&#091;<span class=\"hljs-number\">0<\/span>]&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-number\">3<\/span>;\nintMatrix&#091;<span class=\"hljs-number\">0<\/span>]&#091;<span class=\"hljs-number\">2<\/span>] = <span class=\"hljs-number\">6<\/span>;\nintMatrix&#091;<span class=\"hljs-number\">1<\/span>]&#091;<span class=\"hljs-number\">0<\/span>] = <span class=\"hljs-number\">4<\/span>;\nintMatrix&#091;<span class=\"hljs-number\">1<\/span>]&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-number\">5<\/span>;\nintMatrix&#091;<span class=\"hljs-number\">1<\/span>]&#091;<span class=\"hljs-number\">2<\/span>] = <span class=\"hljs-number\">1<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-48\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wichtig zu wissen ist, dass in Java ein zweidimensionales Array eigentlich ein Array von Arrays ist. Die Beispiel-Arrays, die wir in diesem Abschnitt erzeugt haben, werden im Speicher wie folgt abgelegt (die Darstellung verzichtet wieder auf den Objekt-Header und das L\u00e4ngenfeld):<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"181\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-600x181.png\" alt=\"Java 2D array - representation in memory\" class=\"wp-image-40110\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-600x181.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-224x68.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-336x101.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-504x152.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-672x203.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-400x121.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-800x241.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-944x285.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Jede Zeile der Matrix ist ein separates Array. Du kannst auf diese Arrays auch zugreifen, sie z. B. wie folgt ausgeben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-49\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;] row0 = intMatrix&#091;<span class=\"hljs-number\">0<\/span>];\n<span class=\"hljs-keyword\">int<\/span>&#091;] row1 = intMatrix&#091;<span class=\"hljs-number\">1<\/span>];\nSystem.out.println(<span class=\"hljs-string\">\"row0 = \"<\/span> + Arrays.toString(row0));\nSystem.out.println(<span class=\"hljs-string\">\"row1 = \"<\/span> + Arrays.toString(row1));\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-49\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Wir k\u00f6nnten das <code>intMatrix<\/code>-Array auch wie folgt erzeugen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-50\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">2<\/span>]&#091;<span class=\"hljs-number\">3<\/span>];\nintMatrix&#091;<span class=\"hljs-number\">0<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>};\nintMatrix&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>};\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-50\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die Unter-Arrays <code>intMatrix[0]<\/code> und <code>intMatrix[1]<\/code> werden dabei in der ersten Zeile initial jeweils auf <code>{0, 0, 0}<\/code> gesetzt und dann in der zweiten und dritten Zeile durch neue Arrays \u00fcberschrieben.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wir k\u00f6nnen die Gr\u00f6\u00dfenangabe f\u00fcr die zweite Dimension in der ersten Zeile auch weglassen:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-51\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">2<\/span>]&#091;]; <span class=\"hljs-comment\">\/\/ \u27f5 without second dimension length<\/span>\nintMatrix&#091;<span class=\"hljs-number\">0<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>};\nintMatrix&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>};\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-51\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">In diesem Fall sind <code>intMatrix[0]<\/code> und <code>intMatrix[1]<\/code> initial jeweils <code>null<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es ist \u00fcbrigens nicht vorgeschrieben, dass alle Unter-Arrays gleich lang sein m\u00fcssen. Auch folgendes ist erlaubt:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-52\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">2<\/span>]&#091;];\nintMatrix&#091;<span class=\"hljs-number\">0<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>};\nintMatrix&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">7<\/span>};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-52\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Und auch das d\u00fcrften wir schreiben:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-53\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] intMatrix = {{<span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">6<\/span>}, {<span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">9<\/span>, <span class=\"hljs-number\">7<\/span>}};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-53\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Die in den letzten zwei Beispielen erzeugten 2D-Arrays k\u00f6nnen wir uns grafisch wie folgt vorstellen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"181\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-600x181.png\" alt=\"Java 2D array with different row lengths - representation in memory\" class=\"wp-image-40111\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-600x181.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-224x68.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-336x101.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-504x152.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-672x203.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-400x121.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-800x241.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths-944x285.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-with-different-row-lengths.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Die in den vorherigen Abschnitten behandelten Methoden <code>Arrays.fill()<\/code>, <code>Arrays.setAll()<\/code>, <code>clone()<\/code>, <code>System.arraycopy()<\/code>, <code>Arrays.copyOf()<\/code>, <code>Arrays.copyOfRange()<\/code> lassen sich auf beiden Ebenen solch eines verschachtelten Arrays anwenden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der folgende Code z. B. erzeugt eine Matrix mit den Produkten des kleinen Einmaleins:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-54\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] products = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">11<\/span>]&#091;<span class=\"hljs-number\">11<\/span>];\n<span class=\"hljs-keyword\">for<\/span> (<span class=\"hljs-keyword\">int<\/span> i = <span class=\"hljs-number\">0<\/span>; i &lt; <span class=\"hljs-number\">11<\/span>; i++) {\n  <span class=\"hljs-keyword\">int<\/span> finalI = i; <span class=\"hljs-comment\">\/\/ \u27f5 we need an effectively final variable for the lambda<\/span>\n  Arrays.setAll(products&#091;i], j -&gt; finalI * j);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-54\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Der folgende Code setzt alle Zeilen einer zweidimensionalen Matrix auf ein Array mit den Werten eins bis vier:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-55\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">int<\/span>&#091;]&#091;] matrix = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;<span class=\"hljs-number\">3<\/span>]&#091;];\nArrays.fill(matrix, <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-55\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Beachte allerdings, dass wir dieses innere Array nur einmal erzeugt haben und dass alle Zeilen auf dasselbe innere Array verweisen:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-half_600\"><img decoding=\"async\" width=\"600\" height=\"117\" src=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-600x117.png\" alt=\"Java 2D Array mit geteiltem inneren Array\" class=\"wp-image-40113\" srcset=\"https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-600x117.png 600w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-224x44.png 224w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-336x66.png 336w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-504x98.png 504w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-672x131.png 672w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-400x78.png 400w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-800x156.png 800w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array-944x184.png 944w, https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/04\/java-2d-array-sharing-inner-array.png 1200w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Wenn du den folgenden Code ausf\u00fchrst, wirst du sehen, dass die vermeintliche \u00c4nderung eines einzigen Feldes der Matrix eine ganze Spalte ver\u00e4ndert hat:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-56\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">matrix&#091;<span class=\"hljs-number\">1<\/span>]&#091;<span class=\"hljs-number\">1<\/span>] = <span class=\"hljs-number\">99<\/span>;\nSystem.out.println(<span class=\"hljs-string\">\"matrix = \"<\/span> + Arrays.deepToString(matrix));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-56\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Um f\u00fcr jede Zeile ein separates Array zu erzeugen, kannst du <code>Arrays.setAll()<\/code> verwenden, da hier das im zweiten Parameter \u00fcbergebene Lambda f\u00fcr jede Zeile aufgerufen wird:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-57\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\">Arrays.setAll(matrix, ignored -&gt; <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">int<\/span>&#091;]{<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>});<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-57\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Es ist gut, diese Besonderheiten von mehrdimensionalen Arrays in Java zu kennen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"fazit\">Fazit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In diesem Artikel hast du verschiedenste Methoden kennengelernt, um in Java Arrays zu erzeugen \u2013 von der Initialisierung mit statischen Werten oder Default-Werten \u00fcber das Bef\u00fcllen eines Arrays mit <code>Arrays.fill()<\/code> oder <code>Arrays.setAll()<\/code> und das Kopieren von Arrays mit <code>clone()<\/code>, <code>System.arrayCopy()<\/code> und <code>Arrays.copyOf()<\/code> bis hin zur Umwandlung aus bestehenden Datenstrukturen wie Listen, Sets und Streams.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Du kennst nun au\u00dferdem die Besonderheiten mehrdimensionaler Arrays in Java und wei\u00dft, worauf du bei deren Verwendung achten musst.<\/p>\n<aside><p>Wenn dir der Artikel weitergeholfen hat, w\u00fcrde ich mich sehr \u00fcber eine positive Bewertung auf meinem <a href=\"https:\/\/www.provenexpert.com\/de-de\/sven-woltmann-happycoders-eu\/7smk\/\" target=\"_blank\" rel=\"noopener\">ProvenExpert-Profil<\/a> freuen. Dein Feedback hilft mir, meine Inhalte weiter zu verbessern und motiviert mich, neue informative Artikel zu schreiben.<\/p>\r\n                        <p>\ud83d\udc49 <a href=\"https:\/\/www.provenexpert.com\/de-de\/sven-woltmann-happycoders-eu\/7smk\/\" target=\"_blank\" rel=\"noopener\">Bewertung abgeben<\/a><\/p>\r\n                        <p>Du m\u00f6chtest \u00fcber alle neuen Java-Features auf dem Laufenden sein? Dann <a href=\"#\" data-formkit-toggle=\"d8ee997126\">klicke hier<\/a>, um dich f\u00fcr den HappyCoders-Newsletter anzumelden.<\/p>\r\n                        <p>\ud83d\udc49 <a href=\"#\" data-formkit-toggle=\"d8ee997126\">Newsletter-Anmeldung<\/a><\/p><\/aside>","protected":false},"excerpt":{"rendered":"<p>Wie deklariert und initialisiert man Arrays in Java? Wie kann man sie kopieren und f\u00fcllen? Wie konvertiert man Listen, Sets und Streams in Arrays?<\/p>\n","protected":false},"author":1,"featured_media":40035,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"Wie deklariert und initialisiert man Arrays in Java? Wie kann man sie kopieren und f\u00fcllen? Wie konvertiert man Listen, Sets und Streams in Arrays?","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"arrays in java","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"_uag_custom_page_level_css":"","_wp_convertkit_post_meta":{"form":"-1","landing_page":"","tag":"0","restrict_content":"0"},"_metis_text_type":"standard","_metis_text_length":26181,"_post_count":0,"footnotes":""},"categories":[64],"tags":[164],"class_list":["post-40011","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-java-datenstrukturen"],"uagb_featured_image_src":{"full":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",1770,986,false],"thumbnail":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",150,84,false],"medium":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",300,167,false],"medium_large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",768,428,false],"large":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",1024,570,false],"feature_thumb_224":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-224x125.jpg",224,125,true],"feature_thumb_336":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-336x187.jpg",336,187,true],"feature_thumb_504":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-504x281.jpg",504,281,true],"feature_thumb_672":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-672x374.jpg",672,374,true],"half_400":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-400x223.jpg",400,223,true],"half_600":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-600x334.jpg",600,334,true],"full_800":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-800x446.jpg",800,446,true],"full_944":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-944x526.jpg",944,526,true],"full_1200":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-1200x668.jpg",1200,668,true],"wide_1180":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-1180x490.jpg",1180,490,true],"wide_1770":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java-1770x735.jpg",1770,735,true],"1536x1536":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",1536,856,false],"2048x2048":["https:\/\/www.happycoders.eu\/wp-content\/uploads\/2024\/03\/declare-and-initialize-arrays-in-java.jpg",1770,986,false]},"uagb_author_info":{"display_name":"Sven Woltmann","author_link":"https:\/\/www.happycoders.eu\/de\/author\/sven\/"},"uagb_comment_info":0,"uagb_excerpt":"Wie deklariert und initialisiert man Arrays in Java? Wie kann man sie kopieren und f\u00fcllen? Wie konvertiert man Listen, Sets und Streams in Arrays?","public_identification_id":"1956f3d767b84a8db7ac593c481437e2","private_identification_id":"982dc780e21a4b99bbf2c48a5b6fd684","_links":{"self":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/40011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/comments?post=40011"}],"version-history":[{"count":10,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/40011\/revisions"}],"predecessor-version":[{"id":52435,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/posts\/40011\/revisions\/52435"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media\/40035"}],"wp:attachment":[{"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/media?parent=40011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/categories?post=40011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.happycoders.eu\/de\/wp-json\/wp\/v2\/tags?post=40011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}