HOWTO · Java
Como inicializar todos os elementos de um array com zero em Java
Saiba quando arrays numéricos já começam com zero e como zerar um array existente em Java.
Nesta página
Um array Java recém-alocado de um tipo numérico primitivo já é inicializado com elementos iguais a zero; portanto, não é necessário fazer mais nada para obter um array novo zerado. Para zerar um array existente, use Arrays.fill() ou atribua o valor a cada elemento explicitamente. Arrays de tipos de referência, como Integer[], começam com elementos null.
A inicialização de arrays é tratada como parte do caminho de dados essenciais no Tutorial de Java.
Inicializar elementos de um array com zero usando um loop for
Um loop for atribui um valor a cada índice de um array existente. O loop começa no índice 0 e termina antes de numbers.length, percorrendo assim todos os elementos válidos.
Este programa Java completo aplica as técnicas a arrays pequenos e imprime cada resultado:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ArrayInitialization {
public static void main(String[] args) {
int[] loopValues = {4, 8, 12};
for (int i = 0; i < loopValues.length; i++) {
loopValues[i] = 0;
}
System.out.println("for loop: " + Arrays.toString(loopValues));
int[] filledValues = {4, 8, 12};
Arrays.fill(filledValues, 0);
System.out.println("fill: " + Arrays.toString(filledValues));
List<Integer> repeatedValues = Collections.nCopies(3, 0);
Integer[] boxedValues = repeatedValues.toArray(new Integer[0]);
System.out.println("boxed values: " + Arrays.toString(boxedValues));
int[] numbers = {4, 8, 12};
int[] oldReference = numbers;
numbers = new int[numbers.length];
System.out.println("replacement: " + Arrays.toString(numbers));
System.out.println("old reference: " + Arrays.toString(oldReference));
int[] generatedValues = {4, 8, 12};
Arrays.setAll(generatedValues, index -> 0);
System.out.println("setAll: " + Arrays.toString(generatedValues));
int[] newValues = new int[3];
System.out.println("new array: " + Arrays.toString(newValues));
}
}
O programa imprime:
for loop: [0, 0, 0]
fill: [0, 0, 0]
boxed values: [0, 0, 0]
replacement: [0, 0, 0]
old reference: [4, 8, 12]
setAll: [0, 0, 0]
new array: [0, 0, 0]
Inicializar elementos de um array com zero usando o método fill() em Java
Arrays.fill() grava o valor informado em todos os elementos do array. Em um array numérico primitivo, Arrays.fill(numbers, 0) zera o array existente no próprio lugar. O método também tem versões que preenchem um intervalo selecionado, caso você queira alterar apenas parte do array.
Inicializar elementos de um array com zero usando o método nCopies()
Collections.nCopies(length, 0) retorna uma List<Integer> imutável com valores Integer repetidos (objetos empacotados). Ao converter essa lista com toArray(new Integer[0]), o resultado é um Integer[]; não é um int[] e a conversão não zera um array primitivo existente. Use essa abordagem quando o resultado desejado for uma lista ou um array de objetos Integer, e não como substituto para modificar o array original.
Inicializar elementos de um array com zero por reatribuição em Java
Atribuir new int[numbers.length] faz com que numbers passe a apontar para um novo array, cujos elementos recebem os valores padrão. Qualquer outra variável que ainda aponte para o array original continuará vendo os valores anteriores. A reatribuição troca uma referência; ela não zera o array antigo para todas as variáveis que o referenciam.
Inicializar elementos de um array com zero usando Arrays.setAll()
Arrays.setAll() chama uma função geradora baseada no índice para cada elemento e armazena o valor gerado no array. O exemplo usa index -> 0 para atribuir o mesmo valor em todos os índices. Esse método é útil quando o valor depende do índice; quando todos os elementos recebem uma única constante, Arrays.fill() é mais direto.
Conclusão
Um array numérico primitivo novo já vem inicializado com zeros. Para zerar um array existente, Arrays.fill() é uma opção direta; um loop for deixa explícita a atribuição a cada elemento, e Arrays.setAll() permite gerar valores com base no índice. Collections.nCopies() cria valores Integer repetidos em uma lista, enquanto a reatribuição faz a variável apontar para um novo array e mantém intacto o array antigo para quaisquer outras referências.