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

So kopieren Sie ein Array in Java

(*-*)浩
Freigeben: 2019-05-22 15:09:37
Original
2233 Leute haben es durchsucht

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]
Nach dem Login kopieren

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);
Nach dem Login kopieren

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]
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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新的数组
Nach dem Login kopieren

(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]
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage