Cómo inicializar una matriz en Java

Cómo inicializar una matriz en Java
Una matriz en Java es una estructura de datos que tiene elementos consecutivos del mismo tipo. Los elementos están indexados, comenzando desde cero. En Java, una matriz es un objeto obtenido de la clase de objeto. Hay tres formas de crear una matriz: se puede declarar (crear) una matriz sin la longitud definida. En este caso, la longitud de la matriz aún debe definirse. Se puede crear una matriz, con la longitud definida e inicializada automáticamente con los valores predeterminados del tipo de matriz. Se puede crear una matriz con los valores prácticos asignados a los elementos de la matriz. En este caso, la longitud de la matriz se define indirectamente por el número de valores prácticos.

Este artículo ilustra tres formas de inicializar una matriz, utilizando el tipo primitivo, el tipo de cadena y el tipo definido por el usuario. El tipo de cadena y los tipos definidos por el usuario son tipos de referencia. El artículo comienza con la inicialización de la matriz con un tipo primitivo.

Inicialización de matriz con tipo primitivo

El tipo de char se usará aquí. Char significa personaje. Otros tipos primitivos se realizan de la misma manera. Todo el código en esta sección tiene lugar en el método Main (). La declaración,

char [] arr;

declara una matriz sin ningún valor inicial y sin el número de caracteres indicado. El número de caracteres para la matriz es la longitud de la matriz. Una vez que se ha decidido la longitud, sigue siendo así hasta el final del programa. Se necesita otra declaración, junto con esta, para dar una longitud a esta matriz, como sigue:

char [] arr;
arr = nuevo char [5];

Ahora, el número de caracteres de la matriz (longitud) es 5. Se ha producido alguna inicialización con la segunda declaración. Sin embargo, esto no es una inicialización práctica. Es inicialización con 5 valores predeterminados para char. El valor predeterminado para Char es el personaje vacío, yo.mi. ", No tiene espacio.

El siguiente segmento de código asigna un valor práctico (carácter) a cada una de las ubicaciones de memoria, de las 5 variables de caracteres de la matriz:

arr [0] = 'f';
arr [1] = 'g';
arr [2] = 'H';
arr [3] = 'i';
arr [4] = 'j';

Esta es una tarea o reemplazo. No es inicialización. La inicialización se realizó con valores predeterminados. Las dos declaraciones de declaración anteriores se pueden hacer en una declaración, como sigue:

char [] arr = new Char [5];

El nombre de la matriz es arr. Char es la palabra reservada para char, que aparece en ambos lados del operador de asignación. Nuevo es otro operador. Crea el objeto con valores predeterminados. El segundo soporte cuadrado en toda la declaración tiene la longitud de la matriz. En este punto, cada elemento de la matriz todavía debe recibir un valor práctico. Esa es la segunda forma de declarar una matriz.

La tercera forma de declarar una matriz implica la inicialización con valores prácticos. Está en dos formas, como sigue:

char [] arr = 'f', 'g', 'h', 'i', 'j';

o

char [] arr = new Char [] 'f', 'g', 'h', 'i', 'j';

La primera forma tiene la matriz literal, que se llama inicializador de matriz. Está en aparatos ortopédicos. Cada personaje está en una sola cita. El inicializador de matriz determina indirectamente la longitud de la matriz (número de elementos). El primer formulario no tiene el nuevo operador. El segundo formulario tiene el nuevo operador. Sin embargo, aquí, los segundos soportes cuadrados no tienen la longitud de la matriz, ya que la longitud está implícita en el inicializador de la matriz, codificados al lado de él.

Inicializando la matriz de cuerdas

El objeto de cadena es un muy buen ejemplo del tipo de referencia en Java. Hay dos tipos de tipos en Java: tipos primitivos y de referencia. Los tipos primitivos son: booleano, byte, char, corto, int, largo, doble, flotante. La siguiente declaración declara una matriz de cadenas sin ninguna longitud definida y cualquier valor inicial (ya sea predeterminado o práctico).

Cadena [] arr;

Se necesita otra declaración, junto con esta, para dar una longitud a esta matriz, como sigue:

Cadena [] arr;
arr = nueva cadena [4];

Ahora el número de cadenas (referencias) de la matriz es 4. Se ha producido alguna inicialización con la segunda declaración. Sin embargo, esto no es una inicialización práctica. Es inicialización con 4 valores predeterminados para cadena. El valor predeterminado para la cadena es nulo, sin cotizaciones. El siguiente código en el método main () ilustra esto:

Cadena [] arr;
arr = nueva cadena [4];
para (int i = 0; i<4; i++)
Sistema.afuera.imprimir (arr [i]); Sistema.afuera.imprimir(");

Sistema.afuera.println ();

La salida es:

nulo nulo nulo nulo

El siguiente segmento de código asigna un valor práctico (referencia de cadena) a cada una de las ubicaciones de memoria, de las 4 variables de cadena de la matriz:

arr [0] = "uno";
arr [1] = "dos";
arr [2] = "tres";
arr [3] = "cuatro";

Esta es una tarea o reemplazo. No es inicialización. La inicialización se realizó con valores predeterminados. Las dos declaraciones de declaración anteriores se pueden hacer en una declaración, como sigue:

Cadena [] arr = nueva cadena [4];

El nombre de la matriz es arr. Una cadena es una palabra reservada para cadena, que aparece en ambos lados del operador de asignación. Nuevo es otro operador. Crea la matriz de objeto con valores predeterminados. En toda la declaración, el segundo soporte cuadrado tiene la longitud de la matriz. En este punto, cada elemento de la matriz aún debe recibir un valor práctico. Esa fue la segunda forma de declarar una matriz.

La tercera forma de declarar una matriz implica la inicialización con valores prácticos. Está en dos formas, como sigue:

String [] arr = "one", "dos", "tres", "cuatro";

o

String [] arr = new String [] "one", "dos", "tres", "cuatro";

La primera forma tiene la matriz literal, que se llama inicializador de matriz. Está en aparatos ortopédicos. Cada personaje está en una sola cita. El inicializador de matriz determina indirectamente la longitud de la matriz (número de elementos). El primer formulario no tiene el nuevo operador. El segundo formulario tiene el nuevo operador. Sin embargo, aquí, el segundo soporte cuadrado no tiene la longitud de la matriz, ya que la longitud está implícita en el inicializador de matriz, codificado junto a él.

Nota: Para usar la cadena o la matriz en Java, ni la clase de cadena ni la clase de matriz deben importarse.

Objetos definidos por el usuario

El siguiente es un ejemplo de una clase definida por el usuario:

Clase Aclass
int pro;
int mthd ()
devolver el apoyo;

Aclass es el nombre de la clase a partir de la cual se crearán sus objetos.

En la función Main (), se pueden emplear los siguientes segmentos de código:

Aclass obj1 = new Aclass ();
obj1.Prop = 1;
int ret1 = obj1.mthd ();
Sistema.afuera.println (ret1);
Aclass obj2 = new Aclass ();
obj2.Prop = 2;
int ret2 = obj2.mthd ();
Sistema.afuera.println (ret2);
Aclass obj3 = new Aclass ();
obj3.Prop = 3;
int ret3 = obj3.mthd ();
Sistema.afuera.println (ret3);

Cada segmento de código crea un objeto de tipo, Aclass. Cada uno es un objeto definido por el usuario. Cada segmento de código asigna un entero a la propiedad (campo) de cada objeto. Hay tres objetos diferentes de la misma clase. Cada segmento de código llama a su método para su objeto. La salida para los tres segmentos de código debe ser: 1 2 3, con cada número en una línea separada.

La declaración de una matriz de un tipo de clase definido por el usuario se realiza de la misma manera que en los casos anteriores. Por ejemplo,

Aclass [] arr = nuevo aclass [3];

declara una matriz de tres objetos de tipo, Aclass. Esta declaración creó una matriz inicializada con el valor de tipo predeterminado. Para cualquier tipo de referencia, incluido el tipo de cadena, el valor predeterminado es nulo. Esto significa que hay tres valores de NULL en la matriz, arr, ahora. El siguiente código en Main () debería probar esto:

Aclass [] arr = nuevo aclass [3];
para (int i = 0; i<3; i++)
Sistema.afuera.imprimir (arr [i]); Sistema.afuera.imprimir(");

Sistema.afuera.println ();

La salida es:

nulo nulo nulo

La siguiente declaración inicializa la matriz con objetos prácticos del tipo de aclasa:

Aclass [] arr = obj1, obj2, obj3;
Esta declaración es muy correcta. Desafortunadamente, el siguiente segmento de código, imprime códigos, en lugar de OBJ1, OBJ2 y OBJ3:
Aclass [] arr = obj1, obj2, obj3;
para (int i = 0; i<3; i++)
Sistema.afuera.imprimir (arr [i]); Sistema.afuera.imprimir(");

Sistema.afuera.println ();

La salida es:

Aclass@6ff3c5b5 aclass@3764951d aclass@4b1210ee

Tres códigos diferentes. La razón de esto es que la matriz espera literales de objetos, pero se han dado referencias de objetos.

En el procedimiento anterior, los nombres de objetos, OBJ1, OBJ2 y OBJ3, se crearon (instanciados) antes de escribirlos en la matriz. Para resolver este problema, instanciar los objetos como elementos de matriz, sin sus nombres, como sigue:

Aclass [] arr = new Aclass (), new Aclass (), new Aclass ();

Desde aquí, en lugar de usar los nombres de objetos, OBJ1, OBJ2 OBJ3 para acceder a las propiedades y métodos, use los índices de matriz de la siguiente manera:

arr [0].Prop y arr [0].mthd (); arr [1].Prop y arr [1].mthd (); arr [2].Prop y arr [2].mthd ();

El resuelve el problema. Y así, los tres segmentos de código anteriores se pueden reescribir como:

Aclass [] arr = new Aclass (), new Aclass (), new Aclass ();
arr [0].Prop = 1;
int ret1 = arr [0].mthd ();
Sistema.afuera.println (ret1);
arr [1].Prop = 2;
int ret2 = arr [1].mthd ();
Sistema.afuera.println (ret2);
arr [2].Prop = 3;
int ret3 = arr [2].mthd ();
Sistema.afuera.println (ret3);

Y la salida final esperada es como antes, es decir: 1 2 3, con cada número en su propia línea.

Conclusión

Hay dos tipos de tipos en Java: tipos primitivos y tipos de referencia. Se puede declarar una matriz sin ningún valor de elemento y longitud. Se puede declarar una matriz con su longitud pero inicializarse a sus valores predeterminados por el compilador. Se puede declarar una matriz, inicializarse con los valores prácticos. Si los valores son referencias, y los literales no pueden usarse como valores, entonces los valores de la matriz deben ser las instancias de la clase.