Direkt zum Inhalt
Urkunden
Java SchlüsselwörterJava-ArraysJava Objektorientierte ProgrammierungJava File HandlingEinführung in JavaGrundlagen der Java-Sprache

Java Array copyOf()

Die Methode Arrays.copyOf() in Java ist eine Hilfsfunktion, die von der Klasse java.util.Arrays bereitgestellt wird. Sie wird verwendet, um ein neues Array zu erstellen, indem der angegebene Bereich von Elementen aus einem bestehenden Array kopiert wird. Diese Methode ist nützlich, um die Größe von Arrays zu ändern, Arrays teilweise zu kopieren und Backups von Arrays zu erstellen.

Verwendung

Arrays.copyOf() wird häufig verwendet, wenn du ein Array mit einer anderen Größe duplizieren musst oder wenn du nur einen Teil eines Arrays kopieren willst. Sie gibt ein neues Array zurück, das die kopierten Elemente enthält, und das ursprüngliche Array bleibt unverändert.

Syntax

public static <T> T[] copyOf(T[] original, int newLength)
  • original: Das Array, aus dem Elemente kopiert werden sollen.
  • newLength: Die Länge des neuen Arrays. Wenn sie größer ist als die Länge des ursprünglichen Arrays, wird das neue Array mit Standardwerten aufgefüllt.

Beispiele

Beispiel 1: Kopieren eines ganzen Arrays

import java.util.Arrays;

public class CopyOfExample {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3, 4, 5};
        int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
        
        System.out.println("Original Array: " + Arrays.toString(originalArray));
        System.out.println("Copied Array: " + Arrays.toString(copiedArray));
    }
}

In diesem Beispiel wird Arrays.copyOf() verwendet, um eine exakte Kopie von originalArray zu erstellen. Das neue Array copiedArray enthält alle Elemente aus dem ursprünglichen Array.

Beispiel 2: Kopieren mit größerem Format

import java.util.Arrays;

public class CopyOfLargerExample {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3};
        int[] extendedArray = Arrays.copyOf(originalArray, 5);
        
        System.out.println("Extended Array: " + Arrays.toString(extendedArray));
    }
}

Hier wird Arrays.copyOf() verwendet, um ein neues Array extendedArray mit einer Länge von 5 zu erstellen. Die zusätzlichen Elemente werden mit dem Standardwert von 0 für den Typ int initialisiert.

Beispiel 3: Kopieren mit kleinerem Format

import java.util.Arrays;

public class CopyOfSmallerExample {
    public static void main(String[] args) {
        String[] originalArray = {"Java", "Python", "C++", "JavaScript"};
        String[] truncatedArray = Arrays.copyOf(originalArray, 2);
        
        System.out.println("Truncated Array: " + Arrays.toString(truncatedArray));
    }
}

In diesem Beispiel erstellt Arrays.copyOf() ein neues Array truncatedArray mit nur den ersten beiden Elementen von originalArray.

Tipps und bewährte Praktiken

  • Unveränderliches Original: Das ursprüngliche Array wird von Arrays.copyOf() nicht verändert, um die Datenintegrität zu gewährleisten.
  • Standardwerte: Wenn die neue Array-Länge größer ist als die ursprüngliche, werden die neuen Elemente auf Standardwerte gesetzt (0, null, false, etc.).
  • Array-Typen: Arrays.copyOf() arbeitet mit allen Primitiv- und Objekttypen und ist damit vielseitig für verschiedene Datentypen einsetzbar.
  • Leistung: Achte beim Kopieren großer Arrays auf die Leistung, da dabei ein neues Array erstellt und Elemente kopiert werden müssen.

Shallow und Deep Copy verstehen

Arrays.copyOf() erzeugt eine oberflächliche Kopie, bei der Verweise auf die ursprünglichen Elemente kopiert werden und nicht die Objekte selbst. Das ist wichtig, wenn du mit komplexen Datenstrukturen wie 2D-Arrays oder Arrays von Objekten arbeitest, bei denen sich Änderungen an den Objekten im ursprünglichen Array im kopierten Array widerspiegeln können.

Ausnahmen

  • NegativeArraySizeException: Wird ausgelöst, wenn der Parameter newLength negativ ist.
  • NullPointerException: Wird ausgelöst, wenn das Array original null ist.

Java Grundlagen lernen

Baue deine Java-Kenntnisse von Grund auf auf und beherrsche Programmierkonzepte.
Kostenloses Lernen beginnen