Heim >Java >javaLernprogramm >So kopieren Sie ein Array in Java
Es gibt mehrere Möglichkeiten, ein Array in Java zu kopieren:
(1) Klonen
(2) System.arraycopy
(3) Arrays.copyOf
(4) Arrays.copyOfRange
Im Folgenden wird ihre Verwendung vorgestellt:
(1) Die Klonmethode wird von der Objektklasse geerbt. Grundlegende Datentypen (String, Boolean, Char, Byte, Short, Float, Double.long) können direkt mit der Klonmethode geklont werden Typen können verwendet werden, da ihre Werte unveränderlich sind.
int a1[]={1,3}; int a2[]=a1.clone(); a1[0]=666; System.out.println(Arrays.toString(a1));//[666,3] System.out.println(Arrays.toString(a2));//[1,3]
2) Die System.arraycopy-Methode ist eine lokale Methode, die im Quellcode wie folgt definiert ist:
/** * System.arraycopy(src,srcPos,dest,destPos,length); * src :源数组 srcPos:源数组要复制的起始位置; * dest:目的数组 destPos:目的数组放置的起始位置; * length:复制的长度. */ public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
Anwendungsbeispiel:
int a1[]={1,2,3,4,5}; int a2[]=new int[10]; System.arraycopy(a1,1,a2,3,3); System.out.println(Arrays.toString(a1));//[1, 2, 3, 4, 5] System.out.println(Arrays.toString(a2));//[0, 0, 0, 2, 3, 4, 0, 0, 0, 0]
Hinweis: Für diese Methode müssen wir selbst ein neues Array erstellen
(3) Die unterste Ebene von Arrays.copyOf verwendet tatsächlich auch System.arraycopy. Der Quellcode lautet wie folgt:
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { @SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
Verwendungsbeispiel:
int a1[]={1,2,3,4,5}; int a2[]=Arrays.copyOf(a1,3);//(原数组,拷贝的个数) System.out.println(Arrays.toString(a1));//[1, 2, 3, 4, 5] System.out.println(Arrays.toString(a2));//[1, 2, 3] //这个方法不需要我们new新的数组
(4) Die unterste Ebene von Arrays.copyOfRange verwendet tatsächlich System.arraycopy, kapselt aber eine Methode
int a1[]={1,2,3,4,5}; int a2[]=Arrays.copyOfRange(a1,0,1);//(原数组,开始位置,拷贝的个数) System.out.println(Arrays.toString(a1));//[1, 2, 3, 4, 5] System.out.println(Arrays.toString(a2));//[1]
Schließlich Es ist zu beachten, dass die Kopie des Basistyps keinen Einfluss auf den Wert des ursprünglichen Arrays hat und nicht verwendet werden kann, wenn es sich um einen Referenztyp handelt, da die Kopie (Replikation) des Arrays eine flache Kopie ist.
Das obige ist der detaillierte Inhalt vonSo kopieren Sie ein Array in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!