La diferencia entre System.arraycopy () y Arrays.copyOf ()

Primero mire la declaración de System.arraycopy ():

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

src-la matriz de origen.

srcPos: la posición inicial en la matriz de origen.

dest-la matriz de destino.

destPos: la posición inicial en los datos de destino.

longitud: el número de elementos de la matriz que se copiarán.

Este método utiliza la palabra clave nativa, lo que indica que se llama a la función subyacente escrita en otros idiomas.

 

Mire Arrays.copyOf () nuevamente

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {

   @SuppressWarnings("unchecked")

   T[] copy = ((Object)newType == (Object)Object[].class)
?(T[]) new Object[newLength]
:(T[])    
   Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original,0, copy,0,

   Math.min(original.length, newLength));

   return copy;

}

Este método corresponde a diferentes tipos de datos y tiene su propio método sobrecargado

original: la matriz que se va a copiar

newLength: la longitud de la copia que se devolverá

newType: el tipo de copia que se devolverá

Observe cuidadosamente y descubra que el método System.arraycopy () se llama dentro de copyOf ()

 

La diferencia es que:

  1. System.arraycopy () necesita la matriz de destino, copie la matriz original en la matriz definida por usted mismo, y puede elegir el punto de inicio y la longitud de la copia y la posición en la nueva matriz
  2. Arrays.copyOf () es el sistema que crea automáticamente una matriz internamente, llama a arraycopy () para copiar el contenido original a la copia, y la longitud es newLength. Devuelve copia; es decir, copia la matriz original en una nueva matriz de longitud newLength y devuelve la matriz.

para resumir

Array.copyOf () se puede considerar como un System.arraycopy () restringido, se utiliza principalmente para copiar toda la matriz original a una nueva matriz de longitud, adecuada para la expansión de la matriz .

Supongo que te gusta

Origin blog.csdn.net/qianzhitu/article/details/102997089
Recomendado
Clasificación