ArrayCopy -Methode der Systemklasse in Java

ArrayCopy -Methode der Systemklasse in Java
Betrachten Sie die folgenden zwei Arrays: p = 'a', 'b', 'c', 'd', 'e'

Und

Q = 'f', 'g', 'h', 'i', 'j'

Wenn das Sub-Array von Index 2 bis zum Ende von Array P in Array Q kopiert wird, beginnend von Index 1, wäre das neue Array Q:

'F', 'c', 'd', 'e', ​​'j'

Die Elemente 'G', 'H' und 'I' von Array Q wurden überschrieben. Denken Sie daran, dass die Länge eines Arrays nach der Definition weder erhöht noch verringert werden kann. Das Überschreiben muss also unter solch einem Kopieren stattfinden. Das Ziel hier ist es nicht, einzusetzen. Ziel ist es zu kopieren. Das Array ist keine normale Datenstruktur, um das Einsetzen zu ermöglichen. Mit Einfügung für Datenstrukturen werden alle Elemente rechts an vielen Stellen nach rechts verschoben. Vergessen Sie nicht, dass ein Array in Java keine praktischen Werte hat, es Standardwerte hat. Mit anderen Worten, ein leeres Array ohne Null Länge hat Standardwerte.

Die Systemklasse der Java.Lang.* Das Paket hat die Methode ArrayCopy (). Der Zweck dieser Methode besteht darin, einen Teil eines Arrays in ein anderes Array zu kopieren. Ein Teil kann das gesamte Array sein!

Syntax

Bevor Sie die Syntax der Methode berücksichtigen, ist es gut, ein Programm unter Verwendung der ArrayCopy () -Methode für das obige Array -Kopierbeispiel zu berücksichtigen. Das Programm ist:

öffentliche Klasse Theclass
public static void main (String [] args)
char [] p = 'a', 'b', 'c', 'd', 'e';
char [] q = 'f', 'g', 'h', 'i', 'j';
System.ArrayCopy (p, 2, q, 1, 3);
System.aus.println (q);

Die Ausgabe ist fcdej, besser geschrieben als, f c d e j. Der Ausgang ist wie erwartet, aber nicht gut formatiert. Beachten Sie, dass die Java.Lang.* Paket wurde nicht importiert. Die Java.Lang.* Das Paket muss nicht vom Programmierer für eine Klasse wie das System importiert werden, das es hat. Die Syntax ist:

öffentliche statische Leerraumarraycopy (Objekt SRC, INT SRCPOS, Objektdest, int destpos, intlänge)

Die Methode ist statisch. Dies bedeutet, dass die Systemklasse nicht instanziiert werden muss, um die Methode zu verwenden. Das erste Argument ist das Array, aus dem Elemente kopiert werden sollen. Es wird als Quelle bezeichnet und im obigen Fall handelt es sich um Array P. Das zweite Argument ist der Startindex für das Kopieren aus der Quelle. Im obigen Fall ist es 2. Das dritte Argument ist das Array, in das Elemente kopiert werden sollen. Es wird das Ziel genannt und im obigen Fall handelt es sich um Array Q. Das vierte Argument ist der Startindex für die Kopie, die vom Zielarray empfängt wird. Im obigen Fall ist es 1. Das fünfte Argument ist die Anzahl der Elemente, die aus dem Quellarray kopiert werden sollen, was der Anzahl der Elemente entspricht, die im Zielarray ersetzt werden sollen. Die Zählung dieser Zahl beginnt aus dem Index.

Hinweis: Die Längen der Quell- und Ziel -Arrays müssen nicht gleich sein.

Unvereinbarkeit

Sobald die Implementierungen der beiden Arrays und der ArrayCopy () -Anweisungen korrekt sind, wird das Programm kompiliert, was alles gleich ist. Wenn eine Inkompatibilität vorliegt, wird das Programm nicht ausgeführt, und die entsprechende Ausnahme wird ausgelöst.

Zwei Daten nicht des gleichen Typs

Auf Englisch ist der Plural von Datum Daten. Wenn einer der Arrays für Zeichen und der andere Bytes hat, wird das Programm immer noch kompilieren, was alles gleich ist. Eine ArrayStoreException wird jedoch zur Laufzeit herausgegeben, und das Programm wird nicht ausgeführt. Die Ausnahmefehlermeldung kann sein:

Ausnahme im Thread "Haupt" Java.Lang.ArrayStoreException: ArrayCopy: Typ Mismatch: Kann char [] nicht in byte [] kopieren
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Zwei Daten nicht der gleichen Art

Wenn einer der Arrays Zeichen hat und der andere Charaktere hat, wird das Programm immer noch kompilieren, was alles gleich ist. Eine ArrayStoreException wird jedoch zur Laufzeit herausgegeben, und das Programm wird nicht ausgeführt. Die Ausnahmefehlermeldung kann sein:

Ausnahme im Thread "Haupt" Java.Lang.ArrayStoreException: ArrayCopy: Typ Mismatch: Kann char [] in Objektarray [] nicht kopieren
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Zielarray zu kurz

Wenn die Länge (fünfte Argumentation) über das Ziel -Array hinausgeht, würde ein ArrayIndexoutofundsexception zur Laufzeit geworfen, e.G.

Ausnahme im Thread "Haupt" Java.Lang.ArrayIndexoutofBoundSexception: ArrayCopy: Last Zielindex 4 außerhalb der Grenzen für char [3]
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Quellarray zu kurz

Wenn die Länge (fünfte Argumentation) über das Quellarray hinausgeht, würde ein ArrayIndexoutOfBoundSexception zur Laufzeit geworfen, e.G.

Ausnahme im Thread "Haupt" Java.Lang.ArrayIndexoutOfBoundSexception: ArrayCopy: Last Quell Index 6 aus Grenzen für char [5]
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Zielarray ist null

Das Ziel -Array kann null sein. Zum Beispiel,

char [] q = null;

In diesem Fall wird eine NullPointerexception vom System geworfen.ArrayCopy () Methode; e.G.

Ausnahme im Thread "Haupt" Java.Lang.NULLPOINTERException
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Notiz,

char [] q = ;

bedeutet nicht, dass Q null ist. Es bedeutet, dass Q leer ist. Damit handelt es sich um eine ArrayIndexoutOfBoundSexception, die geworfen wird. e.G.

Ausnahme im Thread "Haupt" Java.Lang.ArrayIndexoutOfBoundSexception: ArrayCopy: Last Zielindex 4 aus Grenzen für char [0]
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Quellarray ist null

Das Quellarray kann null sein. Zum Beispiel,

char [] p = null;

In diesem Fall wird eine NullPointerexception vom System geworfen.ArrayCopy () Methode; e.G.

Ausnahme im Thread "Haupt" Java.Lang.NULLPOINTERException
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Notiz,

char [] p = ;

bedeutet nicht, dass P null ist. Es bedeutet, dass P leer ist. Damit handelt es sich um eine ArrayIndexoutOfBoundSexception, die geworfen wird. e.G.

Ausnahme im Thread "Haupt" Java.Lang.ArrayIndexoutofBoundSexception: ArrayCopy: Last Quell Index 5 aus Grenzen für char [0]
bei Java.Basis/Java.Lang.System.ArrayCopy (native Methode)
In der Klasse.Haupt (TheClass.Java: 10)

Abschluss

Die Systemklasse der Java.Lang.* Paket, hat die ArrayCopy () -Methode. Der Zweck dieser Methode besteht darin, einen Teil eines Arrays in ein anderes Array zu kopieren. Ein Teil kann das gesamte Array sein! Dies ist eine statische Methode, daher muss die Systemklasse nicht so instanziiert werden, dass die Methode verwendet wird. Die Methode gibt ungültig zurück. Die Syntax für die Methode lautet:

öffentliche statische Leerraumarraycopy (Objekt SRC, INT SRCPOS, Objektdest, int destpos, intlänge)