Cómo declarar e inicializar una matriz en Java

En este artículo, veremos cómo declarar e inicializar una matriz en Java, con ejemplos y mejores prácticas. Cubriremos la declaración e inicialización de matrices tradicionales, así como IntStreams.

Introducción

En este tutorial, veremos cómo declarar e inicializar arreglos en Java.

Declaramos una matriz en Java como lo hacemos con otras variables, proporcionando un tipo y un nombre:

1
int[] myArray;

Para inicializar o instanciar una matriz a medida que la declaramos, lo que significa que asignamos valores como cuando creamos la matriz, podemos usar la siguiente sintaxis abreviada:

1
int[] myArray = {13, 14, 15};

O bien, podría generar un flujo de valores y asignarlo de nuevo a la matriz:

1
2
3
int[] intArray = IntStream.range(1, 11).toArray();
int[] intArray = IntStream.rangeClosed(1, 10).toArray();
int[] intArray = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).toArray();

Para comprender cómo funciona esto, lea más para conocer los entresijos de la declaración e instanciación de matrices.

Declaración de matriz en Java

La declaración de un objeto de matriz en Java sigue la misma lógica que la declaración de una variable de Java. Identificamos el tipo de datos de los elementos de la matriz y el nombre de la variable, mientras agregamos corchetes rectangulares [] para indicar que es una matriz.

Aquí hay dos formas válidas de declarar una matriz:

1
2
int intArray[];
int[] intArray;

A menudo se prefiere la segunda opción, ya que indica más claramente de qué tipo es intArray.

Tenga en cuenta que solo hemos creado una referencia de matriz. No se ha asignado memoria a la matriz porque se desconoce el tamaño y no podemos hacer mucho con ella.

Inicialización de matrices en Java

Para usar la matriz, podemos inicializarla con la palabra clave nuevo, seguida del tipo de datos de nuestra matriz y corchetes que contienen su tamaño:

1
int[] intArray = new int[10];

Esto asigna la memoria para una matriz de tamaño 10. Este tamaño es inmutable.

Java llena nuestra matriz con valores predeterminados según el tipo de elemento: ‘0’ para enteros, ‘falso’ para valores booleanos, ’null’ para objetos, etc. Veamos más sobre cómo podemos instanciar una matriz con los valores que queremos. .

La forma lenta de inicializar su matriz con valores no predeterminados es asignar valores uno por uno:

1
2
int[] intArray = new int[10];
intArray[0] = 22;

En este caso, declaró un objeto de matriz de enteros que contiene 10 elementos, por lo que puede inicializar cada elemento utilizando su valor de índice.

La estrategia más común y conveniente es declarar e inicializar la matriz simultáneamente con corchetes {} que contienen los elementos de nuestra matriz.

El siguiente código inicializa una matriz de enteros con tres elementos: 13, 14 y 15:

1
int intArray[] = {13, 14, 15};

Tenga en cuenta que el tamaño de su objeto de matriz será la cantidad de elementos que especifique dentro de las llaves. Por lo tanto, ese objeto de matriz es de tamaño tres.

Este método también funciona para objetos. Si quisiéramos inicializar una matriz de tres cadenas, lo haríamos así:

1
int[] stringArray = {"zelda", "link", "ganon"};

Java también nos permite inicializar la matriz utilizando la palabra clave nuevo:

1
2
int[] intArray = new int[]{13, 14, 15};
int[] stringArray = new String[]{"zelda", "link", "ganon"};

Funciona de la misma manera.

Nota: si está creando un método que devuelve una matriz inicializada, deberá usar la palabra clave nuevo con las llaves. Al devolver una matriz en un método, las llaves solas no funcionarán:

1
2
3
4
5
6
7
public String[] getNames() {
    return new String[]{"zelda", "link", "ganon"}; // Works
}

public String[] getNames() {
    return {"zelda", "link", "ganon"}; // Doesn't work
}

IntStream.rango()

Si está declarando e inicializando una matriz de enteros, puede optar por utilizar la interfaz Java IntStream:

1
int[] intArray = IntStream.range(1, 11).toArray();

El código anterior crea una matriz de diez enteros, que contienen los números del 1 al 10:

1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

La interfaz IntStream tiene un método range() que toma el principio y el final de nuestra secuencia como parámetros. Tenga en cuenta que el segundo parámetro no está incluido, mientras que el primero sí.

Luego usamos el método toArray() para convertirlo en una matriz.

Nota: IntStream es solo una de las pocas clases que se pueden usar para crear rangos. También puede usar DoubleStream o LongStream en cualquiera de estos ejemplos.

IntStream.rangeClosed()

Si desea anular esa característica e incluir también el último elemento, puede usar IntStream.rangeClosed() en su lugar:

1
int[] intArray = IntStream.rangeClosed(1, 10).toArray();

Esto produce una matriz de diez enteros, del 1 al 10:

1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

IntStream.of()

El método IntStream.of() funciona de manera muy similar a declarar una matriz con un número determinado de valores, como:

1
int[] intArray = new int[]{6, 2, 4, 5, 7};

Aquí, especificamos los elementos en la llamada of():

1
int[] intArray = IntStream.of(6, 2, 4, 5, 7).toArray();

Esto produce una matriz con el orden de los elementos preservado:

1
[6, 2, 4, 5, 7]

O incluso podría llamar al método ordenado () en esto, para ordenar la matriz a medida que se inicializa:

1
int[] intArray = IntStream.of(6, 2, 4, 5, 7).sorted().toArray();

Lo que da como resultado una matriz con este orden de elementos:

1
[2, 4, 5, 6, 7]

Inicialización de bucle de matriz de Java

Una de las técnicas más poderosas que puede usar para inicializar su matriz implica usar un bucle for para inicializarlo con algunos valores.

Usemos un ciclo para inicializar una matriz de enteros con valores de 0 a 9:

1
2
3
4
5
int[] intAray = new int[10]; 

for (int i = 0; i < intArray.length; i++) {
    int_array[i] = i;
}

Esto es idéntico a cualquiera de las siguientes opciones más cortas:

1
2
3
int[] intArray = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] intArray = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int[] intArray = IntStream.rangeClosed(0, 9).toArray();

Un bucle es más ideal que los otros métodos cuando tiene una lógica más compleja para determinar el valor del elemento de matriz.

Por ejemplo, con un bucle for podemos hacer cosas como crear elementos con índices pares el doble de grandes:

1
2
3
4
5
6
7
8
9
int[] intArray = new int[10];    

for (int i = 0; i < intArray.length; i++) {
    if (i % 2 == 0) {
        int_array[i] = i * 2;
    } else {
        int_array[i] = i;
    }
}

Conclusión

En este artículo, descubrimos las diferentes formas y métodos que puede seguir para declarar e inicializar una matriz en Java. Hemos usado llaves {}, la palabra clave new y bucles for para inicializar arreglos en Java, ¡así que tiene muchas opciones para diferentes situaciones!

También hemos cubierto algunas formas de usar la clase IntStream para llenar arreglos con rangos de elementos.

Licensed under CC BY-NC-SA 4.0