HOWTO · Java

Cómo inicializar a cero todos los elementos de un array en Java

Aprende cuándo los arrays de Java ya contienen ceros y cómo restablecer sus elementos con varios métodos.

En esta página

Al crear un array nuevo de un tipo numérico primitivo en Java, sus elementos se inicializan con cero, así que no hace falta ningún paso adicional. Para restablecer un array existente, puedes usar Arrays.fill() o asignar cada elemento de forma explícita. En cambio, los arrays de tipos de referencia, como Integer[], empiezan con elementos null.
La inicialización de arrays se trata como parte de la ruta de datos básicos en el Tutorial de Java.

Inicializar los elementos de un array a cero con un bucle for

Un bucle for asigna un valor a cada índice de un array existente. Empieza en el índice 0 y se detiene antes de numbers.length, por lo que recorre todos los elementos válidos.

Este programa completo en Java aplica las técnicas a arrays pequeños 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));
  }
}

El 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 los elementos de un array a cero con el método fill() de Java

Arrays.fill() escribe el valor indicado en todos los elementos del array. En un array numérico primitivo, Arrays.fill(numbers, 0) restablece el array existente en el mismo lugar. El método también tiene variantes para rellenar un rango concreto cuando solo quieres modificar una parte del array.

Inicializar los elementos de un array a cero con el método nCopies()

Collections.nCopies(length, 0) devuelve una List<Integer> inmutable que contiene valores repetidos de tipo Integer (la versión envoltorio de int). Al convertir esa lista con toArray(new Integer[0]), se obtiene un Integer[]; no se obtiene un int[] ni se restablece un array primitivo existente. Usa este método si el resultado que necesitas es una lista o un array de objetos Integer, no para modificar el array original.

Inicializar los elementos de un array a cero mediante una reasignación en Java

La asignación new int[numbers.length] hace que numbers apunte a un array nuevo cuyos elementos tienen sus valores predeterminados. Cualquier otra variable que apunte al array original seguirá viendo sus valores anteriores. La reasignación cambia una referencia; no borra el array antiguo para todas las variables que lo referencian.

Inicializar los elementos de un array a cero con Arrays.setAll()

Arrays.setAll() llama a un generador basado en índices para cada elemento y guarda el valor generado en el array. En el ejemplo, index -> 0 asigna el mismo valor en todos los índices. Este método resulta útil cuando el valor depende del índice; si todos los elementos deben recibir una misma constante, Arrays.fill() es más directo.

Conclusión

Un array nuevo de un tipo numérico primitivo ya se inicializa con ceros. Para restablecer un array existente, Arrays.fill() es una opción directa; un bucle for deja explícita la asignación elemento por elemento, y Arrays.setAll() permite generar valores según el índice. Collections.nCopies() crea valores repetidos de tipo envoltorio en una lista, mientras que la reasignación crea un array nuevo y deja intacto el array antiguo para cualquier otra referencia.