Como inicializar uma matriz em java

Como inicializar uma matriz em java
Uma matriz em Java é uma estrutura de dados que possui elementos consecutivos do mesmo tipo. Os elementos são indexados, começando de zero. Em Java, uma matriz é um objeto obtido da classe de objeto. Existem três maneiras de criar uma matriz: uma matriz pode ser declarada (criada) sem o comprimento definido. Nesse caso, o comprimento da matriz ainda precisa ser definido. Uma matriz pode ser criada, com o comprimento definido e inicializado automaticamente com os valores padrão do tipo de matriz. Uma matriz pode ser criada com os valores práticos atribuídos aos elementos da matriz. Nesse caso, o comprimento da matriz é indiretamente definido pelo número de valores práticos.

Este artigo ilustra três maneiras de inicializar uma matriz, usando o tipo primitivo, o tipo de string e o tipo definido pelo usuário. O tipo de string e os tipos definidos pelo usuário são tipos de referência. O artigo começa com a inicialização da matriz com um tipo primitivo.

Inicializando a matriz com tipo primitivo

O tipo de char será usado aqui. char significa caráter. Outros tipos primitivos são feitos da mesma maneira. Todo o código nesta seção ocorre no método Main (). A declaração,

char [] arr;

declara uma matriz sem qualquer valor inicial e sem o número de caracteres indicado. O número de caracteres para a matriz é o comprimento da matriz. Uma vez que o comprimento é decidido, permanece assim até o final do programa. Outra declaração é necessária, juntamente com este, para dar comprimento a esta matriz, como segue:

char [] arr;
arr = novo char [5];

Agora, o número de caracteres da matriz (comprimento) é 5. Alguma inicialização ocorreu com a segunda declaração. No entanto, isso não é inicialização prática. É inicialização com 5 valores padrão para char. O valor padrão para char é o personagem vazio, eu.e. ”, Não tem espaço.

O próximo segmento de código atribui um valor prático (caractere) a cada um dos locais da memória, das variáveis ​​de 5 caracteres da matriz:

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

Esta é uma tarefa ou substituição. Não é inicialização. A inicialização foi feita com valores padrão. As duas declarações de declaração acima podem ser feitas em uma declaração, como segue:

char [] arr = novo char [5];

O nome da matriz é arr. Char é a palavra reservada para char, que aparece em ambos os lados do operador de tarefas. Novo é outro operador. Ele cria o objeto com valores padrão. O segundo suporte quadrado em toda a declaração tem o comprimento da matriz. Neste ponto, cada elemento da matriz ainda precisa receber um valor prático. Essa é a segunda maneira de declarar uma matriz.

A terceira maneira de declarar uma matriz envolve a inicialização com valores práticos. Está em duas formas, como segue:

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

ou

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

O primeiro formulário tem a matriz literal, que é chamada de inicializadora da matriz. Está no aparelho. Cada personagem está em uma única citação. O inicializador da matriz determina indiretamente o comprimento da matriz (número de elementos). O primeiro formulário não tem o novo operador. O segundo formulário tem o novo operador. No entanto, aqui, os segundos colchetes não têm o comprimento da matriz, pois o comprimento está implícito no inicializador da matriz, codificado ao lado dele.

Inicializando a variedade de cordas

O objeto String é um exemplo muito bom do tipo de referência em java. Existem dois tipos de tipos em Java: Tipos Primitivos e de Referência. Os tipos primitivos são: boolean, byte, char, curto, int, longo, duplo, flutuante. A declaração a seguir declara uma variedade de strings sem qualquer comprimento definido e qualquer valor inicial (seja padrão ou prático).

String [] arr;

Outra declaração é necessária, juntamente com este, para dar comprimento a esta matriz, como segue:

String [] arr;
arr = new string [4];

Agora o número de cordas (referências) da matriz é 4. Alguma inicialização ocorreu com a segunda declaração. No entanto, isso não é inicialização prática. É inicialização com 4 valores padrão para string. O valor padrão para string é nulo, sem cotações. O código a seguir no método Main () ilustra o seguinte:

String [] arr;
arr = new string [4];
para (int i = 0; i<4; i++)
Sistema.fora.impressão (arr [i]); Sistema.fora.imprimir(");

Sistema.fora.println ();

A saída é:

nulo nulo nulo nulo

O segmento de código a seguir atribui um valor prático (referência de string) a cada um dos locais da memória, das 4 variáveis ​​de string da matriz:

arr [0] = "um";
arr [1] = "dois";
arr [2] = "três";
arr [3] = "quatro";

Esta é uma tarefa ou substituição. Não é inicialização. A inicialização foi feita com valores padrão. As duas declarações de declaração acima podem ser feitas em uma declaração, como segue:

String [] arr = new String [4];

O nome da matriz é arr. Uma string é uma palavra reservada para string, que aparece nos dois lados do operador de atribuição. Novo é outro operador. Ele cria a matriz de objetos com valores padrão. Em toda a declaração, o segundo suporte quadrado tem o comprimento da matriz. Neste ponto, cada elemento da matriz ainda precisa receber um valor prático. Essa foi a segunda maneira de declarar uma matriz.

A terceira maneira de declarar uma matriz envolve a inicialização com valores práticos. Está em duas formas, como segue:

String [] arr = "One", "Two", "Three", "Four";

ou

String [] arr = new String [] "One", "Two", "Three", "Four";

O primeiro formulário tem a matriz literal, que é chamada de inicializadora da matriz. Está no aparelho. Cada personagem está em uma única citação. O inicializador da matriz determina indiretamente o comprimento da matriz (número de elementos). O primeiro formulário não tem o novo operador. O segundo formulário tem o novo operador. No entanto, aqui, o segundo suporte quadrado não tem o comprimento da matriz, pois o comprimento está implícito no inicializador da matriz, codificado ao lado dele.

Nota: Para usar a string ou matriz em java, nem a classe de string nem a classe de matriz devem ser importados.

Objetos definidos pelo usuário

A seguir, é apresentado um exemplo de uma classe definida pelo usuário:

classe Aclass
int prop;
int mthd ()
devolver prop;

Aclass é o nome da classe a partir da qual seus objetos serão criados.

Na função Main (), os seguintes segmentos de código podem ser empregados:

Aclass obj1 = novo aclass ();
obj1.prop = 1;
int ret1 = obj1.mthd ();
Sistema.fora.println (ret1);
Aclass obj2 = novo aclass ();
obj2.prop = 2;
int ret2 = obj2.mthd ();
Sistema.fora.println (ret2);
Aclass obj3 = novo aclass ();
obj3.prop = 3;
int ret3 = obj3.mthd ();
Sistema.fora.println (ret3);

Cada segmento de código cria um objeto do tipo, Aclass. Cada um é um objeto definido pelo usuário. Cada segmento de código atribui um número inteiro à propriedade (campo) de cada objeto. Existem três objetos diferentes da mesma classe. Cada segmento de código chama seu método para seu objeto. A saída para os três segmentos de código deve ser: 1 2 3, com cada número em uma linha separada.

A declaração de uma matriz de um tipo de classe definida pelo usuário é feita da mesma maneira que nos casos acima. Por exemplo,

Aclass [] arr = novo aclass [3];

declara uma matriz de três objetos do tipo, Aclass. Esta declaração criou uma matriz inicializada com o valor do tipo padrão. Para qualquer tipo de referência, incluindo o tipo de string, o valor padrão é nulo. Isso significa que existem três valores de nulo na matriz, arr, agora. O código a seguir em Main () deve provar isso:

Aclass [] arr = novo aclass [3];
para (int i = 0; i<3; i++)
Sistema.fora.impressão (arr [i]); Sistema.fora.imprimir(");

Sistema.fora.println ();

A saída é:

nulo nulo nulo

A declaração a seguir inicializa a matriz com objetos práticos do tipo Aclass:

Aclass [] arr = obj1, obj2, obj3;
Esta afirmação está muito correta. Infelizmente, o seguinte segmento de código, imprime os códigos, em vez de obj1, obj2 e obj3:
Aclass [] arr = obj1, obj2, obj3;
para (int i = 0; i<3; i++)
Sistema.fora.impressão (arr [i]); Sistema.fora.imprimir(");

Sistema.fora.println ();

A saída é:

Aclass@6FF3C5B5 Aclass@3764951D Aclass@4B1210EEE

três códigos diferentes. A razão para isso é que a matriz espera literais de objetos, mas as referências de objetos foram dadas.

No procedimento acima, os nomes de objetos, obj1, obj2 e obj3, foram criados (instanciados) antes de escrevê -los na matriz. Para contornar esse problema, instancie os objetos como elementos de matriz, sem seus nomes, como segue:

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

A partir daqui, em vez de usar os nomes de objetos, obj1, obj2 obj3 para acessar as propriedades e métodos, use os índices de matriz da seguinte forma:

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

O problema resolve o problema. E assim, os três segmentos de código acima podem ser reescritos como:

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

E a produção final esperada é como antes, ou seja: 1 2 3, com cada número em sua própria linha.

Conclusão

Existem dois tipos de tipos em Java: tipos primitivos e tipos de referência. Uma matriz pode ser declarada sem nenhum valor e comprimento do elemento. Uma matriz pode ser declarada com seu comprimento, mas inicializada com seus valores padrão pelo compilador. Uma matriz pode ser declarada, inicializada com os valores práticos. Se os valores forem referências e os literais não puderem ser usados ​​como valores, os valores da matriz devem ser as instanciações da classe.