Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Java Array copyOf()

El método Arrays.copyOf() en Java es una función de utilidad proporcionada por la clase java.util.Arrays. Sirve para crear una nueva matriz copiando el rango de elementos especificado de una matriz existente. Este método es útil para redimensionar matrices, copiar parcialmente matrices y crear copias de seguridad de matrices.

Utilización

Arrays.copyOf() se suele utilizar cuando necesitas duplicar una matriz con un tamaño diferente o cuando quieres copiar sólo una parte de una matriz. Devuelve una nueva matriz que contiene los elementos copiados, y la matriz original permanece inalterada.

Syntax

public static <T> T[] copyOf(T[] original, int newLength)
  • original: La matriz de la que se van a copiar los elementos.
  • newLength: La longitud de la nueva matriz. Si es mayor que la longitud de la matriz original, la nueva matriz se rellena con valores por defecto.

Ejemplos

Ejemplo 1: Copiar toda una matriz

import java.util.Arrays;

public class CopyOfExample {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3, 4, 5};
        int[] copiedArray = Arrays.copyOf(originalArray, originalArray.length);
        
        System.out.println("Original Array: " + Arrays.toString(originalArray));
        System.out.println("Copied Array: " + Arrays.toString(copiedArray));
    }
}

En este ejemplo, Arrays.copyOf() se utiliza para crear una copia exacta de originalArray. La nueva matriz copiedArray contiene todos los elementos de la matriz original.

Ejemplo 2: Copiar con un tamaño mayor

import java.util.Arrays;

public class CopyOfLargerExample {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3};
        int[] extendedArray = Arrays.copyOf(originalArray, 5);
        
        System.out.println("Extended Array: " + Arrays.toString(extendedArray));
    }
}

Aquí, Arrays.copyOf() se utiliza para crear una nueva matriz extendedArray con una longitud de 5. Los elementos adicionales se inicializan con el valor por defecto de 0 para el tipo int.

Ejemplo 3: Copiar con un tamaño menor

import java.util.Arrays;

public class CopyOfSmallerExample {
    public static void main(String[] args) {
        String[] originalArray = {"Java", "Python", "C++", "JavaScript"};
        String[] truncatedArray = Arrays.copyOf(originalArray, 2);
        
        System.out.println("Truncated Array: " + Arrays.toString(truncatedArray));
    }
}

En este ejemplo, Arrays.copyOf() crea una nueva matriz truncatedArray con sólo los dos primeros elementos de originalArray.

Consejos y buenas prácticas

  • Original inmutable: La matriz original no es modificada por Arrays.copyOf(), lo que garantiza la integridad de los datos.
  • Valores por defecto: Cuando la nueva longitud de la matriz es mayor que la original, los nuevos elementos se establecen en valores por defecto (0, null, false, etc.).
  • Tipos de matrices: Arrays.copyOf() funciona con todos los tipos primitivos y de objetos, lo que la hace versátil para diversos tipos de datos.
  • Rendimiento: Ten en cuenta el rendimiento al copiar matrices grandes, ya que implica crear una nueva matriz y copiar elementos.

Comprender la copia superficial y profunda

Arrays.copyOf() produce una copia superficial, en la que se copian las referencias a los elementos originales en lugar de los propios objetos. Es importante recordar esto cuando se trata de estructuras de datos complejas, como matrices 2D o matrices de objetos, en las que los cambios en los objetos de la matriz original pueden reflejarse en la matriz copiada.

Excepciones

  • NegativeArraySizeException: Se lanza si el parámetro newLength es negativo.
  • NullPointerException: Se lanza si la matriz original es null.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis