Heim >Java >javaLernprogramm >So kopieren Sie ein Array in Java

So kopieren Sie ein Array in Java

(*-*)浩
(*-*)浩Original
2019-05-22 13:36:412235Durchsuche

Es gibt mehrere Möglichkeiten, ein Array in Java zu kopieren:

So kopieren Sie ein Array in Java

(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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist ein Java-Lebenslauf?Nächster Artikel:Was ist ein Java-Lebenslauf?