Arreglos unidimensionales

Un arreglo unidimensional es una secuencia de datos del mismo tipo. Los datos se llaman elementos del arreglo y se enumeran consecutivamente 0, 1, 2, 3, etc. El tipo de elementos almacenados en el arreglo puede ser de cualquier tipo de dato de Java. Normalmente el arreglo se utiliza para almacenar tipos como double, int , char. 

Un arreglo unidimensional puede contener, por ejemplo, la edad de los alumnos de una clase, las temperaturas de cada día de un mes en una ciudad determinada, o el número de personas que residen en cada una de las 17 comunidades autónomas españolas. Cada ítem del arreglo se denomina elemento. Los elementos de un arreglo unidimensional se enumeran, como ya se ha comentado, consecutivamente 0, 1, 2, 3 . . .

Estos números se denominan valores índice o subíndice del arreglo. El término «subíndice» se utiliza ya que se especifica igual que en matemáticas, como una secuencia como . Estos números localizan la posición del elemento dentro del arreglo, proporcionando acceso directo al arreglo.

Si el nombre del arreglo es a, entonces a[0] es el nombre del elemento que está en la posición 0, a[1] es el nombre del elemento que está en la posición 1, etc. En general el elemento i-ésimo está en la posición i-1. De modo que si el arreglo tiene n elementos sus nombres son a[0], a[1], . . . , a[n-1]. La siguiente figura representa el arreglo a de seis elementos; la descripción del mencionado arreglo es la siguiente: El arreglo a tiene 6 elementos: a[0] contiene 25.1, a[1], 34.2, a[2], 5.25, a[3], 7.45, a[4], 6.09 y a[5] contiene 7.54. El diagrama de la siguiente figura representa realmente una región de la memoria de la computadora, ya que un arreglo se almacena siempre con sus elementos en una secuencia de posiciones de memoria contigua.

En Java los índices de un arreglo siempre tienen como límite inferior 0, como índice superior el tamaño del arreglo menos 1.

Declaración de un arreglo unidimensional

Un arreglo unidimensional se declara con la palabra clave new. Para crear un arreglo, el programador especifica el tipo de cada elemento y el número de elementos que se requieren para el arreglo, como parte de una expresión para crear un arreglo que utiliza la palabra clave new. Dicha expresión devuelve una referencia que puede almacenarse en una variable tipo arreglo.

Regla

Las variables de tipo arreglo se pueden definir con dos formatos diferentes:

  1.  int a[];
  2. int []a;

Sintaxis

Se declara un nombre de un arreglo y se crea un arreglo de un modo similar a la creación y proceso de dar nombre a objetos de clases.

       tipo [] nombre_arreglo = new tipo[NúmeroDeElementos];

Ejemplo

       int c[] = new int [12];
       int c[];                                     // declara la variable arreglo
       c = new int [12];               // crea el arreglo; lo asigna a la variable
                                                              tipo arreglo

En la declaración, los corchetes que van después del nombre de la variable c indican que c es una variable que hará referencia a un arreglo de valores int. En la sentencia de asignación, la variable arreglo c recibe la referencia a un nuevo arreglo de 12 elementos int. Al crear un arreglo, cada uno de sus elementos recibe un valor predeterminado: cero para los elementos numéricos de tipos primitivos, false para los elementos boolean y null para las referencias (cualquier tipo no primitivo).

Ejemplos

       char[] linea = new char[80];
       double[] calificaciones = new double[400];
       Alumno[] listas = new Alumno[120];

Los arreglos linea y calificaciones son de tipo char y double, mientras que listas es una arreglo de tipo Alumno (Alumno es una clase). El tamaño de un arreglo unidimensional (array) o número de elementos del mismo se calcula utilizando la sentencia arreglo.length.

Ejemplo

       int []a = new int[100];
       for(int i=0;i<100;i++)
              a[i] = i;                            // el arreglo se rellena con enteros de 0 a 99
       for(int i=0;i<a.length;i++)
              System.out.println(a[i]);

Regla

  • Una vez que se ha creado un arreglo no se puede cambiar su tamaño, aunque sí, lógicamente, sus elementos individuales.
  • Si se necesita expandir el tamaño de un arreglo mientras se ejecuta un programa, se debe utilizar una estructura de datos diferentes que en Java 5 y versiones posteriores se denomina lista de arreglos.

 Acceso a los elementos de un arreglo unidimensional

El acceso a los elementos de un arreglo se realiza de igual modo que en otros lenguajes de programación.

Sintaxis

       nombre_arreglo[índice];

Ejemplos

       nombres[3];
       lista[5];
       a[a.length – 1];

Arreglos y objetos

En Java un arreglo unidimensional (array) es considerado un objeto. Esto significa que se pueden considerar los tipos arreglos como clases. Sin embargo, aunque un arreglo de tipo double[] es una clase, la sintaxis para crear un objeto arreglo es un poco diferente. Para crear un arreglo, se utiliza la sintaxis:

       double m[] = new double[10];

 Se puede considerar la expresión new double[10] como una invocación de un constructor que utiliza una sintaxis no estándar.

Como ya se ha visto anteriormente, cada arreglo tiene una variable de instancia denominada length. Al igual que sucede con cualquier otro tipo de clases, las variables arreglo contienen direcciones de memoria, conocidas en Java como referencias y por consiguiente, los tipos arreglo son tipos referencia.

Advertencia

  • Existe cierto debate entre expertos de Java sobre la consideración de que los tipos arreglos son o no clases; sin embargo, existe práctica unanimidad, en que los arreglos son, en sí mismos, objetos.
  • Los tipos arreglos son tipos referencia y una variable de un tipo arreglo contiene la dirección donde se almacena el objeto arreglo en memoria. Esta dirección de memoria se denomina referencia al objeto arreglo.

Inicialización de arreglos unidimensionales y arreglos anónimos

Java tiene un formato especial abreviado para crear un objeto arreglo e inicializar el mismo, sin recurrir a la llamada a new.

Sintaxis

       int []numerosPrimos = {1,3,5,7,11,13,17,19};

En Java, existe la posibilidad de crear objetos y clases anónimas, y en particular arreglos anónimos. Cuando una expresión como

       new PruebaClase(«Betty»,19);

no se asigna a una variable se conoce como  un objeto anónimo. La expresión crea una referencia a un objeto de la clase. Se denomina anónimo debido a que el objeto no se asigna a una variable para ser referenciada por su nombre. Es el caso de un arreglo, se puede inicializar un arreglo anónimo con la siguiente declaración

       new int [] {1,3,5,7,9};

Esta expresión asigna a un arreglo nuevo y lo rellena con los valores internos a las llaves. Cuenta el número de valores iniciales y establece el tamaño correspondiente del arreglo. Se puede utilizar la sintaxis para reinicializar un arreglo sin crear una nueva variable. Así, por ejemplo, las declaraciones:

       int []anonimo = {1,3,5,7,11,13,17,19};
       numerosPrimos = anonimo;

que equivale a la expresión:

       numerosPrimos = new int [] {1,3,5,7,11,13,17,19};