Méthode ArrayCopy de la classe système en Java

Méthode ArrayCopy de la classe système en Java
Considérez les deux tableaux suivants: P = 'A', 'B', 'C', 'D', 'E'

et

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

Si le sous-tableau de l'index 2 à la fin du tableau P est copié sur le tableau Q, à partir de l'index, 1, alors le nouveau tableau Q serait:

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

Les éléments «g», «h» et «i» de l'arraie q ont été écrasés. N'oubliez pas que la durée d'un tableau ne peut ni augmenter ni diminuer après la définition. Donc, l'écrasement doit avoir lieu sous une telle copie. Le but ici n'est pas d'insérer. Le but est de copier. Le tableau n'est pas une structure de données normale pour permettre l'insertion. Avec l'insertion pour les structures de données, tous les éléments de droite sont déplacés vers la droite à de nombreux endroits. N'oubliez pas que lorsqu'un tableau en Java n'a pas de valeurs pratiques, il a des valeurs par défaut. En d'autres termes, un tableau vide de longueur non nul a des valeurs par défaut.

La classe système du java.égouter.* Le package a la méthode ArrayCopy (). Le but de cette méthode est de copier une partie d'un tableau dans un autre tableau. Une partie peut être l'ensemble du tableau!

Syntaxe

Avant d'envisager la syntaxe de la méthode, il est bon de considérer un programme avec l'utilisation de la méthode ArrayCopy (), pour l'exemple de copie de la table ci-dessus. Le programme est:

classe publique TheClass
public static void main (String [] args)
char [] p = 'a', 'b', 'c', 'd', 'e';
char [] q = 'f', 'g', 'h', 'i', 'j';
Système.ArrayCopy (P, 2, Q, 1, 3);
Système.dehors.println (q);

La sortie est fcdej, mieux écrite comme, f c d e j. La sortie est comme prévu, mais pas bien formé. Remarquez que le java.égouter.* Le package n'a pas été importé. Le java.égouter.* Le package n'a pas à être importé par le programmeur pour une classe, comme le système, qu'il a. La syntaxe est:

Arraycopy public vide statique (objet Src, int srcpos, objet dest, int destpos, intr longueur)

La méthode est statique. Cela signifie que la classe système n'a pas besoin d'être instanciée pour utiliser la méthode. Le premier argument est le tableau à partir duquel les éléments doivent être copiés. Il est appelé la source, et dans le cas ci-dessus, c'est le tableau P. Le deuxième argument est l'index de démarrage pour la copie à partir de la source. Dans le cas ci-dessus, c'est 2. Le troisième argument est le tableau auquel les éléments doivent être copiés. Il s'appelle la destination, et dans le cas ci-dessus, c'est le tableau Q. Le quatrième argument est l'index de démarrage pour la réception de copie par le tableau de destination. Dans le cas ci-dessus, c'est 1. Le cinquième argument est le nombre d'éléments à copier à partir du tableau source, qui est le même que le nombre d'éléments à remplacer dans le tableau de destination. Le comptage de ce numéro commence à partir de l'index.

Remarque: les longueurs des tableaux source et de destination ne doivent pas être les mêmes.

Incompatibilité

Une fois que les implémentations des deux tableaux et des instructions ArrayCopy () sont correctes, le programme se compilera, tout étant égal. S'il y a une incompatibilité, le programme ne fonctionnera pas et l'exception correspondante sera jetée.

Deux données pas du même type

En anglais, le pluriel de la date est les données. Si l'un des tableaux a des caractères et l'autre a des octets, le programme se compilera toujours, tout étant égal. Cependant, une exception ArrayStoreException sera publiée lors de l'exécution et le programme ne s'exécutera pas. Le message d'erreur d'exception peut être:

Exception dans le fil "Main" Java.égouter.ArrayStoreException: ArrayCopy: Type Mismatch: ne peut pas copier le char [] en octet []
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Deux données pas du même type

Si l'un des tableaux a des caractères et l'autre a des caractères, le programme sera toujours compilé, tout étant égal. Cependant, une exception ArrayStoreException sera publiée lors de l'exécution et le programme ne s'exécutera pas. Le message d'erreur d'exception peut être:

Exception dans le fil "Main" Java.égouter.ArrayStoreException: ArrayCopy: Type Mismatch: ne peut pas copier Char [] dans le tableau d'objets []
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Tableau de destination trop court

Si la longueur (cinquième argument) va au-delà du tableau de destination, un ArrayIndexoutofBoundSexception serait lancé à l'exécution, e.g.

Exception dans le fil "Main" Java.égouter.ArrayIndexoutofBoundSexception: ArrayCopy: Last Destination Index 4 Out of Bounds for Char [3]
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Tableau source trop court

Si la longueur (cinquième argument) va au-delà du tableau source, un arrayindexoutofboundSexception serait lancé à l'exécution, e.g.

Exception dans le fil "Main" Java.égouter.ArrayIndexoutofBoundSexception: ArrayCopy: Dernier indice de source 6 des limites pour char [5]
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Le tableau de destination est nul

Le tableau de destination peut être nul. Par exemple,

char [] q = null;

Dans ce cas, une nulpointerexception sera lancée par le système.Méthode ArrayCopy (); e.g.

Exception dans le fil "Main" Java.égouter.NullPointerException
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Note,

char [] q = ;

ne signifie pas que Q est nul. Cela signifie que Q est vide. Avec cela, c'est un arrayindexoutofboundSexception qui sera lancé; e.g.

Exception dans le fil "Main" Java.égouter.ArrayIndexoutofBoundSexception: ArrayCopy: Last Destination Index 4 Out of Bounds for Char [0]
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Le tableau source est nul

Le tableau source peut être nul. Par exemple,

char [] p = null;

Dans ce cas, une nulpointerexception sera lancée par le système.Méthode ArrayCopy (); e.g.

Exception dans le fil "Main" Java.égouter.NullPointerException
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Note,

char [] p = ;

ne signifie pas que p est nul. Cela signifie que P est vide. Avec cela, c'est un arrayindexoutofboundSexception qui sera lancé; e.g.

Exception dans le fil "Main" Java.égouter.ArrayIndexoutofBoundSexception: ArrayCopy: Dernier indice de source 5 des limites pour char [0]
à Java.base / java.égouter.Système.ArrayCopy (méthode native)
à la classe.Main (Theclass.Java: 10)

Conclusion

La classe système du java.égouter.* Package, a la méthode ArrayCopy (). Le but de cette méthode est de copier une partie d'un tableau dans un autre tableau. Une partie peut être l'ensemble du tableau! Il s'agit d'une méthode statique, donc la classe système n'a pas besoin d'être instanciée pour que la méthode soit utilisée. La méthode renvoie vide. La syntaxe de la méthode est:

Arraycopy public vide statique (objet Src, int srcpos, objet dest, int destpos, intr longueur)