Saltar al contenido

¿Qué es un array en programación?

que son los arreglos en java

Los arrays se utilizan para agrupar objetos del mismo tipo.

De esta manera, podemos referirnos a este grupo con el mismo nombre.

Yo lo llamaré array, pero te lo puedes encontrar con muchos nombres:

  • arreglos
  • vectores
  • matrices

Como hemos dicho, podemos declarar arrays de cualquier tipo, ya sea tipos de datos primitivos o clases.

Depende mucho del lenguaje programación usado, pero la sintaxis suele ser muy parecida a Java.

char[] cadena;
Figura[] cuadrados; // Donde Figura es una clase 

Como vemos, se declara el tipo seguido de unos corchetes [], y después el nombre de la variable.

Pero también lo podemos declarar de la siguiente manera:

char cadena[];
Figura cuadrados[];

Esta opción es la estándar en lenguajes como C o C++, y también es posible usarlo en Java.

Ejemplos de arrays

Ya hemos visto un ejemplo de cómo declarar arrays, pero lo habitual es reservar un tamaño fijo de memoria.

En la mayoría de lenguajes, cuando definimos ese tamaño ya no se puede cambiar en todo el ciclo de vida del programa.

Cuando hablamos de programación orientada a objetos, una array se considera un objeto.

Eso quiere decir que si la declaramos tal y como hemos hecho, no estamos creando el objeto, sino que crea una referencia para poder utilizarlo.

Para inicializar una array solemos utilizar la palabra reservada new.

Por ejemplo, creamos una array del tipo de datos básico int.

s = new int[30];

Esta línea crea una array de 30 valores que son números, utilizando el valor por defecto (en este caso, como son números es 0).

Si lo que queremos es rellenarlo con números, por ejemplo consecutivos, podríamos hacerlo así:

for (int i = 0; i < 30; i++) {
    s[i] = i + 1;
}

Si depurásemos este programa, y miramos los valores de la array, veremos que están los números del 1 al 30.

Vemos que dentro de los corchetes le asignamos un número, en este caso el valor de la variable i.

Ese número se llama índice, y es la posición dentro de la array para localizar el valor que contiene,

Si te fijas, empieza por 0, y no por 1. Esto es muy habitual en lenguajes de programación, ya que el primer valor del índice suele ser el número 0.

Igualmente , el rango para referirnos a las posiciones dentro del array debe ser mayor o igual que cero y menor que el tamaño máximo que hemos definido, en este caso 30.

En casi todos los lenguajes podemos utilizar la palabra especial length para indicar el tamaño total de la array. Así, en vez de poner 30 en el bucle se podría poner s.length;

Si intentamos acceder a un elemento fuera de estos límites tendremos un error en tiempo de ejecución.

Existe otra manera más simple para crear arreglos con valores iniciales. Imagina esta situación:

String[] nombres = {"Juan","Carlos","Marcos"}

Que si lo quieres un poco más ordenado el compilador te permitiría ponerlo así:

String[] nombres = {
   "Juan",
   "Carlos",
   "Marcos"
}

Este código sería equivalente a escribir así:

String[] nombres = new String[3];
nombres[0] = "Juan";
nombres[1] = "Carlos";
nombres[2] = "Marcos";

Crear arrays de objetos

Podemos crear arrays de objetos, tal y como hemos visto:

cuadrados = new Figuras[10];

En esta línea creamos 10 referencias del tipo Figuras en un array.

Pero tal y como hemos dicho, no creamos 10 objetos. El valor que tendrá en cada posición será null.

Para crearlos, se debe hacer de la siguiente manera:

cuadrados = new Figuras[10];
for (int i = 0; i < 10; i++) {
    cuadrados[i] = new Figura();
} 

Qué es un array bidimensional

Existen lenguajes de programación que permite crear un array bidimensional, es decir, de dos dimensiones.

Por ejemplo en visual basic:

Dim matrix(5, 5) As Double

Pero en Java no provee por defecto matrices multidimensionales. Lo que si se puede hacer es crear arrays de arrays, y asñi hasta el infinito.

El siguiente ejemplo simularía un arreglo de dos dimensiones:

int [][] dosDimensiones = new int[4] [];
dosDimensiones[0] = new int[5];
dosDimensiones[1] = new int[5]; 

En la primera línea tenemos una array de cuatro elementos. Cada uno de estos elementos tiene una referencia nula a un elemento de tipo número entero.

Se debe inicializar cada elemento separadamente, que son las líneas siguientes. Si te fijas, podrías crear arrays de arrays no rectangulares, por ejemplo así:

dosDimensiones[0] = new int[3];
dosDimensiones[1] = new int[5];
dosDimensiones[2] = new int[20];
dosDimensiones[3] = new int[8];

Como todo esto es un poco engorroso, también se podría declarar de esta manera:

int [][] dosDimensiones = new int[4] [5];