Das sogenannte Kopieren eines Arrays bezieht sich auf das Kopieren der Elemente in einem Array in ein anderes Array
Es gibt die folgenden 4 Methoden zum Implementieren des Array-Kopierens in Java:
Ursprüngliche Zuweisungsmethode
Arrays The copyOf()-Methode der Arrays-Klasse, die copyOfRange()-Methode der Arrays-Klasse, die arraycopy()-Methode der System-Klasse, die clone()-Methode der Object-Klasse,
1 Ursprüngliche Zuweisungsmethode
public static void method01(int[] arr, int[] ans) { for (int i = 0; i < arr.length; i++) { ans[i] = arr[i]; } System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
Die Methode copyOf() kopiert das Array auf die angegebene Länge
Arrays.copyOf(dataType[] srcArray,int length);
wobei,
stellt die Länge des neuen Arrays nach dem Kopieren dar.public static void method02(int[] arr, int[] ans) { ans = Arrays.copyOf(arr, arr.length + 3); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }3. Verwenden Sie die CopyOfRange()-Methode Die CopyOfRange()-Methode der Arrays-Klasse ist eine weitere Methode zum Kopieren eines Arrays:
Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex)
srcArray
表示要进行复制的数组,length
wobei:
srcArray das Original darstellt Array.
endIndex stellt den Endindex dar. Der Endindex muss größer oder gleich startIndex sein und kann größer als srcArray sein. Länge wird das Zielarray mit Standardwerten gefüllt.
public static void method03(int[] arr, int[] ans) { ans = Arrays.copyOfRange(arr, 0, arr.length + 3); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
4. Verwenden Sie die arraycopy()-Methode.
System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length)
Wobei srcArray das ursprüngliche Array darstellt; Startindex im Originalarray; destArray stellt den Startindex im Zielarray dar; Länge stellt die Länge des zu kopierenden Arrays dar.
Hinweis: Das Zielarray muss bereits vorhanden sein und wird nicht rekonstruiert, was dem Ersetzen einiger Elemente im Zielarray gleichkommt. public static void method03(int[] arr, int[] ans) {
ans = Arrays.copyOfRange(arr, 0, arr.length + 3);
System.out.println("复制的ans数组为 " + Arrays.toString(ans));
}
5. Mit der clone()-Methode können auch Arrays kopiert werden. Diese Methode ist eine Methode in der Klasse Object und kann ein Objekt mit separatem Speicherplatz erstellen. Da das Array auch eine Object-Klasse ist, können Sie das Array auch mit der clone()-Methode des Array-Objekts kopieren. Der Rückgabewert der
array_name.clone()
public static void method05(int[] arr, int[] ans) { ans = arr.clone(); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }Hinweis: Die oben genannten Methoden sind alle flache Kopien. Beim flachen Kopieren wird nur die Referenzadresse des Objekts kopiert. Die beiden Objekte verweisen auf dieselbe Speicheradresse. Wenn also ein Wert geändert wird, ändert sich der andere Wert entsprechend. Deep Copy kopiert Objekte und Werte. Wenn ein Wert der beiden Objekte geändert wird, ändert sich der andere Wert nicht. Vollständiger Testfall
package com.zhuang; import java.util.Arrays; /** * * @ClassName: ArrayCopy * @Description:测试数组复制的几种方法 * @author: KangXiaoZhuang * @date: 2022年10月8日 下午2:19:06 */ public class ArrayCopy { public static void main(String[] args) { // TODO Auto-generated method stub int[] arr = new int[] { 57, 81, 68, 75, 91 }; int[] ans = new int[arr.length]; method01(arr, ans); method02(arr, ans); method03(arr, ans); method04(arr, ans); method05(arr, ans); } /** * * @Title: method01 * @Description: 原始复制方法 * @author: KangXiaoZhuang * @param: @param arr 原始数组 * @param: @param ans 目标数组 * @return: void * @throws */ public static void method01(int[] arr, int[] ans) { for (int i = 0; i < arr.length; i++) { ans[i] = arr[i]; } System.out.println("原始复制方法复制的ans数组为 " + Arrays.toString(ans)); } /** * * @Title: method02 * @Description: copyOf()方法 * @author: KangXiaoZhuang * @param: @param arr 原始数组 * @param: @param ans 目标数组 * @return: void * @throws */ public static void method02(int[] arr, int[] ans) { ans = Arrays.copyOf(arr, arr.length + 3); System.out.println("copyOf()方法复制的ans数组为 " + Arrays.toString(ans)); } /** * * @Title: method03 * @Description: copyOfRange()方法 * @author: KangXiaoZhuang * @param: @param arr 原始数组 * @param: @param ans 目标数组 * @return: void * @throws */ public static void method03(int[] arr, int[] ans) { ans = Arrays.copyOfRange(arr, 0, arr.length + 3); System.out.println("copyOfRange()方法复制的ans数组为 " + Arrays.toString(ans)); } /** * * @Title: method04 * @Description: arraycopy()方法 * @author: KangXiaoZhuang * @param: @param arr 原始数组 * @param: @param ans 目标数组 * @return: void * @throws */ public static void method04(int[] arr, int[] ans) { System.arraycopy(arr, 0, ans, 0, 5); System.out.println("arraycopy()方法复制的ans数组为 " + Arrays.toString(ans)); } /** * * @Title: method05 * @Description: 使用clone()方法 * @author: KangXiaoZhuang * @param: @param arr * @param: @param ans * @return: void * @throws */ public static void method05(int[] arr, int[] ans) { ans = arr.clone(); System.out.println("clone()方法复制的ans数组为 " + Arrays.toString(ans)); } }Ausgabe Das von der ursprünglichen Kopiermethode kopierte ans-Array ist [57, 81, 68, 75, 91]
Das von der copyOf()-Methode kopierte ans-Array ist [57, 81, 68, 75, 91, 0, 0, 0]Das von der Methode clone() kopierte ans-Array ist [57, 81, 68, 75, 91]Das von der copyOfRange()-Methode kopierte ans-Array ist [57, 81, 68, 75, 91, 0, 0, 0]
Das ans-Array Von der Methode arraycopy() kopiert ist [57, 81, 68, 75, 91]
Das obige ist der detaillierte Inhalt vonDies kann wie folgt umgeschrieben werden: Mit welchen Methoden kann ein Java-Array kopiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!