En el siguiente código fuente se demuestra el uso de Arreglos con Clases Generadas (Propias) y primitivos, debido a la extensión del ejemplo su descripción es dividida en dos secciones.
class Clip {} public class Arreglo { public static void main(String[] args) { // Arreglos de Objetos Clip[] a; // Referencia Nula Clip[] b = new Clip[5]; Clip[] c = new Clip[4]; // Inicialización Dinámica con Ciclo for(int i = 0; i < c.length; i++) c[i] = new Clip(); // Inicialización al Crearse Arreglo Clip[] d = { new Clip(), new Clip(), new Clip() }; // Inicialización Dinámica a = new Clip[] { new Clip(), new Clip() }; System.out.println("a.length=" + a.length); System.out.println("b.length = " + b.length); // Las referencia dentro del Arreglo // son automáticamente inicializadas a "null" for(int i = 0; i < b.length; i++) System.out.println("b[" + i + "]=" + b[i]); System.out.println("c.length = " + c.length); System.out.println("d.length = " + d.length); a = d; System.out.println("a.length = " + a.length); |
Primeramente se define una Clase denominada Clip
la cual simplemente consta de su declaración, seguido se encuentra la definición de la Clase principal Arreglo
que contiene solo su método principal (main
), dentro de este método se define lo siguiente:
En la primer sección son definidas tres referencias en manera de Arreglo para la Clase Clip
; la primer declaración únicamente define la referencia, mientras las siguientes lineas definen dos referencias asignándose un arreglo de 5 y 4 Objetos respectivamente.
Posteriormente son inicializados los distintos arreglos; en el primer caso se emplea un ciclo el cual asigna un Objeto a cada valor del arreglo, seguido se genera un nuevo arreglo el cual es inicializado en la misma declaración, finalmente se lleva acabo la inicialización de la referencia a
En esta ultima sección son impresos los distintos valores de los respectivos arreglos, en estas declaraciones se hace uso del método interno length
, dicho método esta disponible para cualquier tipo de arreglo e indica la longitud del mismo; además de esto son impresos los valores del arreglo b
, los cuales por "default" son asignados un valor de null
; además de lo anterior, un detalle relevante es la asignación a = d
, como fue demostrado en un ejemplo anterior, este tipo de asignación hace que la referencia a
apunte hacia los Objetos de la referencia d
, por lo que el último valor del arreglo(referencia) a
equivale a 3.
A continuación se describe el resto del Código Fuente para el programa:
// Arreglo de Primitivos int[] e; // Referencia Nula int[] f = new int[5]; int[] g = new int[4]; // Inicialización Dinámica con Ciclo for(int i = 0; i < g.length; i++) g[i] = i*i; // Inicialización al Crearse Arreglo int[] h = { 11, 47, 93 }; // Error Compilación : Variable(Arreglo) no inicializada // System.out.println("e.length=" + e.length); System.out.println("f.length = " + f.length); // Los primitivos dentro del Arreglo // son inicializados a cero: for(int i = 0; i < f.length; i++) System.out.println("f[" + i + "]=" + f[i]); for(int i = 0; i < g.length; i++) System.out.println("g[" + i + "]=" + g[i]); System.out.println("h.length = " + h.length); e = h; System.out.println("e.length = " + e.length); e = new int[] { 1, 2 }; System.out.println("e.length = " + e.length); } } |
En la primer sección son definidas tres variables en manera de Arreglo para primitivos int
; la primer declaración únicamente define la variable, mientras las siguientes lineas definen dos variables asignándose un arreglo de 5 y 4 primitivos respectivamente.
Posteriormente son inicializados los distintos arreglos; en el primer caso se emplea un ciclo el cual asigna valores al arreglo g
, seguido se genera un nuevo arreglo el cual es inicializado en la misma declaración.
En esta ultima sección son impresos los distintos valores de los respectivos arreglos:
La primer declaración (nótese el uso de comentarios) intenta imprimir la longitud del arreglo e
, esto generaría un error de compilación debido a que el arreglo e
no ha sido inicializado.
Posteriormente se imprime el tamaño del arreglo f
.
Se imprimen los valores de los arreglos f
y g
, seguido de la longitud del arreglo h
, los cuales como cualquier primitivo int
son asignados un valor de 0 (cero)
por "default".
Se asigna el valor del arreglo h
al arreglo e
.
Debido a la asignación anterior, es posible utilizar el método length
sobre el arreglo e
, el cual tomará el mismo valor del arreglo h
.
Son redefinidos-reinicializados los valores del arreglo e
con dos nuevos primitivos.
Finalmente se imprime la nueva longitud del arreglo e
.