Pular para o conteúdo principal
Documentos
Palavras-chave JavaMatrizes JavaProgramação orientada a objetos em JavaManuseio de arquivos JavaIntrodução ao JavaNoções básicas da linguagem Java

Java Array copyOf()

O método Arrays.copyOf() em Java é uma função utilitária fornecida pela classe java.util.Arrays. É usado para criar uma nova matriz, copiando o intervalo de elementos especificado de uma matriz existente. Esse método é útil para redimensionar matrizes, copiar matrizes parciais e criar backups de matrizes.

Uso

Arrays.copyOf() é comumente usado quando você precisa duplicar uma matriz com um tamanho diferente ou quando deseja copiar apenas uma parte de uma matriz. Ele retorna um novo array contendo os elementos copiados, e o array original permanece inalterado.

Sintaxe

public static <T> T[] copyOf(T[] original, int newLength)
  • original: A matriz da qual os elementos devem ser copiados.
  • newLength: O comprimento da nova matriz. Se for maior que o comprimento da matriz original, a nova matriz será preenchida com valores padrão.

Exemplos

Exemplo 1: Cópia de uma matriz inteira

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));
    }
}

Neste exemplo, Arrays.copyOf() é usado para criar uma cópia exata de originalArray. A nova matriz copiedArray contém todos os elementos da matriz original.

Exemplo 2: Copiando com um tamanho maior

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));
    }
}

Aqui, Arrays.copyOf() é usado para criar uma nova matriz extendedArray com um comprimento de 5. Os elementos adicionais são inicializados com o valor padrão de 0 para o tipo int.

Exemplo 3: Copiando com um tamanho 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));
    }
}

Neste exemplo, Arrays.copyOf() cria uma nova matriz truncatedArray com apenas os dois primeiros elementos de originalArray.

Dicas e práticas recomendadas

  • Original imutável: A matriz original não é modificada por Arrays.copyOf(), garantindo a integridade dos dados.
  • Valores padrão: Quando o novo comprimento da matriz for maior que o original, os novos elementos serão definidos como valores padrão (0, null, false, etc.).
  • Tipos de matriz: Arrays.copyOf() funciona com todos os tipos primitivos e de objetos, o que o torna versátil para vários tipos de dados.
  • Desempenho: Tenha cuidado com o desempenho ao copiar matrizes grandes, pois isso envolve a criação de uma nova matriz e a cópia de elementos.

Entendendo a cópia superficial e profunda

Arrays.copyOf() produz uma cópia superficial, em que as referências aos elementos originais são copiadas, e não os próprios objetos. É importante lembrar disso ao lidar com estruturas de dados complexas, como matrizes 2D ou matrizes de objetos, em que as alterações nos objetos da matriz original podem se refletir na matriz copiada.

Exceções

  • NegativeArraySizeException: Lançado se o parâmetro newLength for negativo.
  • NullPointerException: Será lançado se a matriz original for null.

Learn Java Essentials

Desenvolva suas habilidades em Java desde o início e domine os conceitos de programação.
Comece a aprender de graça