Las matrices son objetos que almacenan múltiples variables del mismo tipo. Puede contener tipos prim itivos así como referencias de objetos. De hecho, la mayoría de los tipos de colecciones en Java que forman parte del paquete java.util usan arrays internamente en su funcionamiento. Como los Arrays son objetos, se crean durante el tiempo de ejecución. La longitud del array es fija.
Características del Array
- Los conjuntos son objetos
- Incluso pueden contener las variables de referencia de otros objetos
- Se crean durante el tiempo de ejecución
- Son dinámicas, creadas en el montón
- La longitud de la matriz es fija
Declaración de Array
Primero vayamos a la declaración de la matriz que contiene los tipos primitivos. La declaración de la matriz indica el tipo de elemento que contiene la matriz, seguido del identificador y de los corchetes que indican que el identificador es de tipo matriz.
Ejemplo 1: Declaración de una matriz que contiene elementos de tipo entero.
int aiMyArray[];
La declaración anterior crea una referencia de la matriz en la pila.
Una forma diferentede declarar una matriz –
¡Las dos declaraciones siguientes son válidas e iguales!
int []aiMyArray;int aiMyArray[];
Error de compilación–
La siguiente declaración causaría un error de compilación ya que el compilador (JVM) no asigna el objeto hasta que no se instancie realmente al objeto de la matriz.
int aiFirstArray[] = nuevo int[6];
La declaración anterior crea un array de tamaño 6 en el montón. Para la creación del objeto Array, la JVM necesita saber el tamaño del espacio que se asignará al objeto, por lo que el tamaño debe ser especificado después de la nueva palabra clave.
Si observas, todos los elementos del array se inicializarán a 0 cuando se cree en el montón. Si desea algunos otros valores en lugar de los valores por defecto, necesita especificar lo siguiente
int aiFirstArray[]={1,2,3,4,5,6};
La declaración anterior declara, construye e inicializa la matriz.
Uso de la matriz
Se puede acceder a los elementos de la matriz con la ayuda del índice. aiFirstArray[0] se refiere a 1 ,aiFirstArray[1] se refiere a 2 etc. Se puede acceder hasta aiFirstArray[n-1] donde n es el tamaño del array. Acceder al array con un índice mayor o igual al tamaño del array lleva a la excepción del NullPointer.
¿Cómo se obtiene el tamaño del array?
aiFirstArray.length da el tamaño del array.
Ejemplo 3: El siguiente ejemplo inicializa los elementos del array a 1,2,3,4,5,6 y los imprime.
clase ArrayInicialización{ public static void main(String args[]){ int aiFirstArray[] = nuevo int[6]; for(int i=0;i<aiFirstArray.length;i++){ aiFirstArray[i]=i+1; } for(int i=0;i<aiFirstArray.length;i++){ System.out.println(aiFirstArray[i]); } }}
Recolección de basura y arreglos
aiFirstArray=nulo;
La afirmación anterior hace que la matriz apunte a nulo, significa que el objeto de la matriz que estaba en el montón está listo para la recogida de basura. Referirse al objeto matriz ahora da una excepción de NullPointer.
Matrices multidimensionales
Las matrices multidimensionales son matrices de matrices en las que cada elemento de la matriz tiene la referencia de otra matriz. También se llaman matrices dentadas.
Ejemplo:
int aiMdArray[][]=new int [2][];
La afirmación anterior crea una matriz en la que tiene dos elementos que apuntan a nulo. No es necesario mencionar nada en la segunda llave cuadrada ya que las matrices individuales pueden ser creadas más tarde.
aiMdArray[0]=new int [2];
La declaración anterior inicializa el primer elemento a un nuevo conjunto de 2 elementos.
aiMdArray[0][0]=10;
La declaración anterior inicializa el primer elemento de la primera matriz a 10.
Conjunto de referencias
Las matrices en Java también pueden contener referencias de objetos aparte de los primitivos. Veamos un ejemplo que explica la Matriz de Objetos.
Ejemplo 5: considere una clase Empleado que tiene una subclase Aprendiz
clase Empleado clase Aprendiz se extiende Empleado
Considere esta declaración:
Empleado emp[]=nuevo empleado[3];
La declaración anterior crea sólo una matriz de 3 elementos que contiene 3 referencias de empleado emp[0], emp[1], emp[2]. Tenga en cuenta que los objetos de empleado aún no han sido creados. Referirse a los objetos de empleado conduce a la Excepción de tiempo de ejecución.
El siguiente código inicializa los objetos de empleado
for(int i=0;i<emp.length;i++){emp[i]=nuevo empleado();}
Ya que la referencia de la clase padre también puede apuntar a los objetos de la clase hijo:
for(int i=0;i<emp.length;i++){emp[i]=new Trainee();}
Considere un Salario de Interfaz que está siendo implementado por el Empleado.
La clase Salario{} de la interfaz Empleado implementa Salario{}
Sabemos que Interface no puede ser instanciado, pero la referencia puede ser usada para señalar los objetos de las clases que lo implementan. Así que podemos tener un código como el siguiente –
Salario sal[]=nuevo Salario[2];sal[0]=nuevo Empleado();sal[1]=nuevo Empleado();