Metodo ArrayCopy della classe di sistema in Java

Metodo ArrayCopy della classe di sistema in Java
Considera i seguenti due array: p = 'a', 'b', 'c', 'd', 'e'

E

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

Se il sotto-array dall'indice 2 alla fine dell'array p viene copiato in array q, a partire dall'indice, 1, allora il nuovo array Q sarebbe:

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

Gli elementi "G", "H" e "I" di Array Q sono stati sovrascritti. Ricorda che la lunghezza di un array non può essere né aumentata né diminuita dopo la definizione. Quindi, la sovrascrittura deve avvenire sotto tale copia. L'obiettivo qui non è quello di inserire. L'obiettivo è copiare. L'array non è una normale struttura dei dati per consentire l'inserimento. Con l'inserimento per le strutture di dati, tutti gli elementi a destra vengono spostati a destra in molti luoghi. Non dimenticare che quando un array in Java non ha valori pratici, ha valori predefiniti. In altre parole, un array vuoto di lunghezza diverso da zero ha valori predefiniti.

La classe di sistema di Java.Lang.* Il pacchetto ha il metodo ArrayCopy (). Lo scopo di questo metodo è copiare una parte di un array in un altro array. Una parte può essere l'intero array!

Sintassi

Prima di considerare la sintassi del metodo, è bene considerare un programma con l'uso del metodo ArrayCopy (), per l'esempio di copia dell'array sopra. Il programma è:

Classe pubblica TheClass
public static void main (string [] args)
char [] p = 'a', 'b', 'c', 'd', 'e';
char [] q = 'f', 'g', 'h', 'i', 'j';
Sistema.ArrayCopy (P, 2, Q, 1, 3);
Sistema.fuori.println (q);

L'output è fcdej, meglio scritto come, f c d e j. L'output è come previsto, sebbene non ben formattato. Si noti che il Java.Lang.* Il pacchetto non è stato importato. Il Java.Lang.* Il pacchetto non deve essere importato dal programmatore per qualsiasi classe, come il sistema, che ha. La sintassi è:

Public Static Void ArrayCopy (Object Src, Int Srcpos, Object Dest, Int Desppos, Int Long)

Il metodo è statico. Ciò significa che la classe di sistema non deve essere istanziata per utilizzare il metodo. Il primo argomento è l'array da cui gli elementi devono essere copiati. Si chiama fonte e, nel caso sopra, è un array p. Il secondo argomento è l'indice di avvio per la copia dalla fonte. Nel caso sopra, è 2. Il terzo argomento è l'array a cui gli elementi devono essere copiati. Si chiama destinazione e, nel caso sopra, è un array q. Il quarto argomento è l'indice di avvio per la copia che riceve dall'array di destinazione. Nel caso sopra, è 1. Il quinto argomento è il numero di elementi da copiare dall'array di origine, che è lo stesso del numero di elementi da sostituire nell'array di destinazione. Il conteggio di questo numero inizia dall'indice.

NOTA: le lunghezze degli array di origine e di destinazione non devono essere le stesse.

Incompatibilità

Una volta che le implementazioni delle due array e le dichiarazioni di arraycopy () sono corrette, il programma si compilerà, tutto uguale. In caso di incompatibilità, il programma non verrà eseguito e la corrispondente eccezione verrà lanciata.

Due dati non dello stesso tipo

In inglese, il plurale del dato è dati. Se uno degli array ha Chars e l'altro ha byte, il programma comunque si compilerà, tutto è uguale. Tuttavia, un ArraystoreException verrà emesso in fase di esecuzione e il programma non eseguirà. Il messaggio di errore di eccezione potrebbe essere:

Eccezione nel thread "Main" Java.Lang.ArraystoreException: ArrayCopy: Tipo Mismatch: non può copiare char [] in byte []
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

Due dati non dello stesso tipo

Se uno degli array ha Chars e l'altro ha caratteri, il programma comunque si compilerà, tutto è uguale. Tuttavia, un ArraystoreException verrà emesso in fase di esecuzione e il programma non eseguirà. Il messaggio di errore di eccezione potrebbe essere:

Eccezione nel thread "Main" Java.Lang.ArraystoreException: ArrayCopy: Tipo Mismatch: non può copiare char [] in oggetti array []
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

Array di destinazione troppo corto

Se la lunghezza (quinto argomento) va oltre l'array di destinazione, un ArrayIndexoutOfBoundSexception verrebbe lanciato in fase di esecuzione, E.G.

Eccezione nel thread "Main" Java.Lang.ArrayIndexoutOfBoundSexception: ArrayCopy: ultimo indice di destinazione 4 Out of Bounds for Char [3]
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

Array di origine troppo corto

Se la lunghezza (quinto argomento) va oltre l'array di origine, un ArrayIndexoutOfBoundSexception verrebbe lanciato in fase di esecuzione, E.G.

Eccezione nel thread "Main" Java.Lang.ArrayIndexoutOfBoundSexception: ArrayCopy: Ultimo indice di sorgente 6 Out of Bounds for Char [5]
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

L'array di destinazione è nullo

L'array di destinazione può essere nullo. Per esempio,

char [] q = null;

In questo caso, un nullpointerException verrà lanciato dal sistema.Metodo ArrayCopy (); e.G.

Eccezione nel thread "Main" Java.Lang.NullpointerException
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

Nota,

char [] q = ;

non significa che Q sia nullo. Significa che Q è vuoto. Con questo, è un ArrayIndexoutOfBoundSexception che verrà lanciato; e.G.

Eccezione nel thread "Main" Java.Lang.ArrayIndexoutOfBoundSexception: ArrayCopy: Ultimo indice di destinazione 4 Out of Bounds for Char [0]
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

L'array di origine è nullo

L'array di origine può essere nullo. Per esempio,

char [] p = null;

In questo caso, un nullpointerException verrà lanciato dal sistema.Metodo ArrayCopy (); e.G.

Eccezione nel thread "Main" Java.Lang.NullpointerException
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

Nota,

char [] p = ;

non significa che p sia nullo. Significa che p è vuoto. Con questo, è un ArrayIndexoutOfBoundSexception che verrà lanciato; e.G.

Eccezione nel thread "Main" Java.Lang.ArrayIndexoutoFBoundSexception: ArrayCopy: Ultimo indice di sorgente 5 Out of Bounds for Char [0]
a Java.base/java.Lang.Sistema.ArrayCopy (Metodo nativo)
a Theclass.Main (TheClass.Java: 10)

Conclusione

La classe di sistema di Java.Lang.* pacchetto, ha il metodo ArrayCopy (). Lo scopo di questo metodo è copiare una parte di un array in un altro array. Una parte può essere l'intero array! Questo è un metodo statico, quindi la classe di sistema non deve essere istanziata per il metodo da utilizzare. Il metodo restituisce vuoto. La sintassi per il metodo è:

Public Static Void ArrayCopy (Object Src, Int Srcpos, Object Dest, Int Desppos, Int Long)