Método ArrayCopy de la clase de sistema en Java

Método ArrayCopy de la clase de sistema en Java
Considere las siguientes dos matrices: p = 'a', 'b', 'c', 'd', 'e'

y

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

Si la sub-array del índice 2 al final de la matriz P se copia a la matriz Q, comenzando desde el índice, 1, entonces la nueva matriz Q sería:

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

Los elementos 'G', 'H' y 'I' de Array Q han sido sobrescribidos. Recuerde que la longitud de una matriz no se puede aumentar ni disminuir después de la definición. Entonces, la sobrescritura tiene que tener lugar bajo tales copias. El objetivo aquí no es insertar. El objetivo es copiar. La matriz no es una estructura de datos normal para permitir la inserción. Con la inserción para las estructuras de datos, todos los elementos de la derecha se desplazan hacia la derecha en muchos lugares. No olvide que cuando una matriz en Java no tiene valores prácticos, tiene valores predeterminados. En otras palabras, una matriz vacía de longitud distinta de cero tiene valores predeterminados.

La clase del sistema de la Java.lang.* El paquete tiene el método ArrayCopy (). El propósito de este método es copiar una parte de una matriz en otra matriz. Una porción puede ser toda la matriz!

Sintaxis

Antes de considerar la sintaxis del método, es bueno considerar un programa con el uso del método ArrayCopy (), para el ejemplo de copia de matriz anterior. El programa es:

clase pública 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.afuera.println (q);

La salida es fcdej, mejor escrita como, f c d e j. La salida es como se esperaba, aunque no está bien formateada. Observe que el Java.lang.* El paquete no se ha importado. El java.lang.* El programador no tiene que importar el paquete para ninguna clase, como el sistema, que tiene. La sintaxis es:

Public static void arrayCopy (Object src, int srcpos, object dest, int Destpos, int longitud)

El método es estático. Esto significa que la clase del sistema no tiene que ser instanciada para usar el método. El primer argumento es la matriz desde la cual se deben copiar elementos de. Se llama la fuente, y en el caso anterior, es una matriz P. El segundo argumento es el índice de inicio para copiar desde la fuente. En el caso anterior, son 2. El tercer argumento es la matriz a la que se deben copiar elementos. Se llama destino, y en el caso anterior, es una matriz q. El cuarto argumento es el índice de inicio para la recepción de la copia por la matriz de destino. En el caso anterior, es 1. El quinto argumento es el número de elementos que se copiarán de la matriz de origen, que es el mismo que el número de elementos que se reemplazarán en la matriz de destino. El conteo de este número comienza desde el índice.

Nota: Las longitudes de las matrices de origen y de destino no tienen que ser las mismas.

Incompatibilidad

Una vez que las implementaciones de las dos matrices y las declaraciones ArrayCopy () son correctas, el programa se compilará, todo es igual. Si hay alguna incompatibilidad, el programa no se ejecutará y se lanzará la excepción correspondiente.

Dos datos no del mismo tipo

En inglés, el plural de datum son datos. Si una de las matrices tiene caracteres y el otro tiene bytes, el programa aún se compilará, todo es igual. Sin embargo, una arraystoreException se emitirá en tiempo de ejecución, y el programa no se ejecutará. El mensaje de error de excepción puede ser:

Excepción en el hilo "principal" Java.lang.ArrayStoreException: ArrayCopy: Type Mismatch: no puede copiar char [] en byte []
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

Dos datos no del mismo tipo

Si una de las matrices tiene caracteres y el otro tiene personajes, el programa aún se compilará, todo es igual. Sin embargo, una arraystoreException se emitirá en tiempo de ejecución, y el programa no se ejecutará. El mensaje de error de excepción puede ser:

Excepción en el hilo "principal" Java.lang.ArrayStoreException: ArrayCopy: Tipo de incumplimiento: no puede copiar char [] en la matriz de objetos []
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

Matriz de destino demasiado corta

Si la longitud (quinto argumento) va más allá de la matriz de destino, se lanzaría un ArrayIndexoUtofBoundSexception en tiempo de ejecución, E.gramo.

Excepción en el hilo "principal" Java.lang.ArrayIndexOutofBoundSException: ArrayCopy: Índice de destino último 4 fuera de los límites para Char [3]
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

Matriz de fuente demasiado corta

Si la longitud (quinto argumento) va más allá de la matriz de origen, se arrojaría un ArrayIndexoUtofBoundsexception en tiempo de ejecución, E.gramo.

Excepción en el hilo "principal" Java.lang.ArrayIndexOutofBoundSException: ArrayCopy: Índice de la última fuente 6 fuera de los límites para Char [5]
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

La matriz de destino es nula

La matriz de destino puede ser nula. Por ejemplo,

char [] q = null;

En este caso, el sistema arrojará una NullPointerException.método arrayCopy (); mi.gramo.

Excepción en el hilo "principal" Java.lang.Excepción de puntero nulo
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

Nota,

char [] q = ;

no significa que Q sea nulo. Significa que Q está vacío. Con esto, es una ArrayIndexoUtofBoundSexception que se lanzará; mi.gramo.

Excepción en el hilo "principal" Java.lang.ArrayIndexoUtofBoundSException: ArrayCopy: Índice de destino último 4 fuera de los límites para char [0]
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

La matriz de origen es nula

La matriz de origen puede ser nula. Por ejemplo,

char [] p = nulo;

En este caso, el sistema arrojará una NullPointerException.método arrayCopy (); mi.gramo.

Excepción en el hilo "principal" Java.lang.Excepción de puntero nulo
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

Nota,

char [] p = ;

no significa que P sea nulo. Significa que P está vacío. Con esto, es una ArrayIndexoUtofBoundSexception que se lanzará; mi.gramo.

Excepción en el hilo "principal" Java.lang.ArrayIndexOutofBoundSException: ArrayCopy: Índice de la última fuente 5 fuera de los límites para Char [0]
en Java.base/java.lang.Sistema.ArrayCopy (método nativo)
en el theclass.principal (.Java: 10)

Conclusión

La clase del sistema de la Java.lang.* Paquete, tiene el método ArrayCopy (). El propósito de este método es copiar una parte de una matriz en otra matriz. Una porción puede ser toda la matriz! Este es un método estático, por lo que la clase del sistema no tiene que ser instanciada para que se utilice el método. El método devuelve nulo. La sintaxis para el método es:

Public static void arrayCopy (Object src, int srcpos, object dest, int Destpos, int longitud)