Heim  >  Artikel  >  Java  >  Java versteht das Kopieren von Arrays durch den zugrunde liegenden Quellcode

Java versteht das Kopieren von Arrays durch den zugrunde liegenden Quellcode

WBOY
WBOYnach vorne
2022-07-22 16:42:591786Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java. Er führt hauptsächlich in die detaillierte Analyse des Verständnisses der Array-Kopie durch den zugrunde liegenden Originalcode ein, einschließlich der Schleifenkopie des Arrays, der Arrays.copyOf-Methode, der Arrays.copyofRange-Methode usw. Werfen wir einen Blick darauf Ich hoffe, dass der Inhalt unten für alle hilfreich ist.

Java versteht das Kopieren von Arrays durch den zugrunde liegenden Quellcode

Empfohlene Studie: „Java-Video-Tutorial

Schleife zum Kopieren eines Arrays

Die Verwendung einer Schleife zum Kopieren eines Arrays ist sehr einfach, d. h. die Verwendung einer Schleife zum Zuweisen der Elemente des Arrays nacheinander in ein neues Array kopiert. Die spezifische Code-Implementierung lautet wie folgt:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            copy[i] = arr[i];
        }
    }

Dies ist die Methode, an die wir im Allgemeinen denken. Hier sind einige praktischere Methoden, die JAVA für uns bereitstellt.

Arrays.copyOf-Methode

Da ich ein ganzzahliges Array kopiere, verwende ich die Arrays.copyOf-Methode, um ein ganzzahliges Array zu kopieren. Es können auch Arrays anderer Typen kopiert werden, nicht nur Integer-Arrays.

Im Folgenden wird die Arrays.copyOf-Methode durch Kopieren eines ganzzahligen Arrays erläutert. Schauen wir uns zunächst den zugrunde liegenden Originalcode der Arrays.copyOf-Methode an:

public static int[] copyOf(int[] original, int newLength) {
        int[] copy = new int[newLength];
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }

Wir können sehen, dass der Rückgabewert der Array.copyOf-Methode ist ein ganzzahliges Array, und der formale Parameter hat zwei Parameter, einer ist ein ganzzahliges Array und der andere ist eine ganzzahlige Variable.

Das ganzzahlige Array im formalen Parameter ist der Name des Arrays, das wir kopieren möchten.

Die ganzzahlige Variable im formalen Parameter ist die Länge des Arrays, das wir kopieren möchten.

Da es einen Rückgabewert gibt, verwenden wir die Arrays.copyOf-Methode Zu diesem Zeitpunkt ist ein Array erforderlich, um den Rückgabewert zu empfangen. Der Code ist wie folgt implementiert:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy =Arrays.copyOf(arr,arr.length);
    }

Hinweis: Die Länge der Kopie kann die Länge des zu kopierenden Arrays überschreiten. Wenn sie die Länge des zu kopierenden Arrays überschreitet, ist der Wert des zusätzlichen Elements 0; Beispiel: Ich möchte das arr-Array kopieren, aber die Größe des arr-Arrays beträgt 5. Wenn ich beim Kopieren arr.length*2 ändere, beträgt die Größe des kopierten Arrays 10 und der Wert 6 bis 10 Elemente werden 0 sein. Dies wird auch als Erweiterung betrachtet.

Arrays.copyofRange-Methode

Wenn wir einen Teil eines Arrays kopieren möchten, können wir die Arrays.copyRange-Methode verwenden. Wie oben verwenden wir zur Erklärung auch das Kopieren eines Integer-Arrays. Schauen wir uns zunächst den zugrunde liegenden Originalcode an:

public static int[] copyOfRange(int[] original, int from, int to) {
        int newLength = to - from;
        if (newLength < 0)
            throw new IllegalArgumentException(from + " > " + to);
        int[] copy = new int[newLength];
        System.arraycopy(original, from, copy, 0,
                         Math.min(original.length - from, newLength));
        return copy;
    }

Aus dem Originalcode von Arrays.copyRange können wir ersehen, dass der Rückgabewert ein Integer-Array ist Der formale Parameter ist ein Integer-Array mit zwei Integer-Variablen.

Das ganzzahlige Array im formalen Parameter ist der Array-Name des zu kopierenden Arrays.

Die beiden ganzzahligen Variablen von und bis im formalen Parameter sind der Bereich der Array-Elemente, die Sie kopieren möchten [form, to). Die linke Seite ist geschlossen und die rechte Seite ist offen, mit Ausnahme des Elements an dieser Position. Der Code wird wie folgt implementiert:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = Arrays.copyOfRange(arr,1,3);
    }

Hinweis: Der Array-Index beginnt bei 0 und die Elemente von 1 bis 3 beziehen sich auf 2, 3 und 4. Die rechte Seite ist jedoch ein offenes Intervall, sodass 4 nicht enthalten ist , also kopieren Sie das Array-Wissen Die beiden Elemente 2 und 3.

System.arraycopy-Methode

Dann lasst uns über die System.arraycopy-Methode sprechen. Tatsächlich haben sorgfältige Schüler herausgefunden, dass es im Originalcode der ersten beiden Methoden eine System.arraycopy-Methode gibt, auf die auch die unterste Ebene angewiesen ist Zu erreichende System.arraycopy-Methode. Werfen wir zunächst einen Blick auf den zugrunde liegenden Originalcode

public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

System.arraycopy kann den Originalcode der Implementierung nicht sehen. Der Grund dafür ist, dass die zugrunde liegende Ebene nativ in C/C++ implementiert ist. Der Vorteil der nativen Methode besteht jedoch darin, dass sie sehr schnell ausgeführt wird. Der Code wird wie folgt implementiert:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = new int[arr.length];
        System.arraycopy(arr,0,copy,0,arr.length);
    }

Zu diesem Zeitpunkt wird das gesamte Array von arr kopiert. Wenn Sie eine teilweise Kopie erstellen möchten, können Sie die teilweise Kopie vervollständigen, indem Sie die formalen Parameter ändern Die letzte Methode ist die Array-Name.clone-Methode. Der Code ist wie folgt implementiert:

public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
        int[] copy = arr.clone();
    }

Die Kopie ist vollständig. Diese Methode erstellt hauptsächlich eine Kopie des Objekts, aber die Adresse ist immer noch unterschiedlich.

Empfohlenes Lernen: „

Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonJava versteht das Kopieren von Arrays durch den zugrunde liegenden Quellcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen