quarta-feira, 31 de março de 2010

[Java] Determinar o número de elementos de uma matriz


Para determinar o número de elementos de uma matriz basta verificar o valor da variável de instância lenght (comprimento) da matriz desejada. A variável length armazena o número de elementos de uma matriz.

Exemplo


System.out.println("O número de elementos é: "+ matriz.lenght);

[Java] Explicar como inicializar os elementos de uma matriz


Este assunto já foi abortado neste post.

[Java] Explicar porque os elementos de uma matriz são inicializados


Os elementos de uma matriz devem ser inicializados para "reservar" o espaço de memória da matriz. Quando uma matriz é inicializada, é reservado na memória o espaço necessário para todos os elementos da matriz. Se uma referência a uma antiga matriz for utilizada para reservar uma nova matriz, a anterior será perdida e posteriormente "limpada" da memória pelo garbage collector.

[Java] Declarar e criar matrizes de tipos de primitivas, de classes e de matrizes


Declarando matrizes

Matrizes servem para agrupar valores de dados de um mesmo tipo e finalidade. Como foi visto neste post matrizes podem ser declaradas para qualquer tipo de primitiva, mas além de tipos de primitivas podem também ser declaradas como classes ou também outras matrizes (matriz de matriz).

Quando as matrizes são declaradas cria-se um espaço na memória por referência, como pode ser visto na última figura do post passado.

Declarando matrizes de objetos

Matrizes de objetos funciona da mesma maneira que as matrizes de primitivas, porém ao invés de conter um valor de tipo primitivo, contém um objeto. Veja no exemplo abaixo como declarar, instanciar e inicializar esse tipo de matriz.
Data[] vetorDatas;
vetorDatas = new Data[3];
vetorDatas[0] = new Data(07, 04, 1986);
vetorDatas[1] = new Data(03, 11, 1985);
vetorDatas[2] = new Data(31, 03, 2010);
Matrizes de objetos podem ser declarados, instanciados e inicializados como da forma acima, mas também da seguinte forma:
Data[] vetorData = {new Data(07, 04, 1986),
new Data(03, 11, 1985),
new Data(31, 03, 2010)};
Declarando matrizes de matrizes

Da mesma forma que matrizes de primitivas e matrizes de objetos, funcionam as matrizes de matrizes. Matrizes de matrizes são comumente chamadas também de matrizes multidimensionais. Veja a figura abaixo para visualizar sua utilidade e funcionamento.


No exemplo acima, se tentar acessar a posição vetorDeVetor[1][5] (que não existe) irá retornar uma exceção do tipo java.lang.ArrayIndexOutOfBoundsException. Informando justamente que o índice que foi acessado excede a matriz.

[Java] Definir valores de matrizes com atributo de comprimento e um loop


Mesmo com a simplificação utilizando matrizes para controlar e manipular várias variáveis em comum, iniciar os campos da matriz um por um continua um trabalho dispendioso, porém, podemos atribuir valores para cada campo da matriz utilizando de um valor de tamanho da matriz e um loop. Vejamos abaixo como realizar esta tarefa.

Exemplo
int[] numeros;
numeros = new numeros[40];

for (int contador=0; contador < numeros.length; contador++){
numeros[contador] = contador;
}
Neste exemplo, numeros.length retorna o tamanho da matriz numeros, que no nosso exemplo acima é 40. Cada campo da matriz irá receber o valor da posição em que ele se encontra. Com esse exemplo pode-se modificar e atribuir o que for necessário para cada posição.

[Java] Codificar matrizes unidimensionais


Muitas vezes precisamos gravar vários valores em apenas uma variável. Por exemplo, para gravar as notas de uma turma de 40 alunos, seria muito trabalhoso criar e manipular 40 variáveis diferentes, assim uma variável com 40 campos seria mais simples e fácil de se manipular e controlar, não é? Geralmente com esse intuito são utilizados as matrizes.

Matrizes com apenas uma dimensão são comumente chamadas de vetores. Veja a figura abaixo para entender um pouco sobre as matrizes unidimensionais.

Um fator importante a ser lembrado é que em java os vetores quando declarados possuem a posição inicial como 0 (zero). Assim, em um vetor (chamado vetor) de 10 posições a ultima posição não é vetor[10] e sim vetor[9]. Abaixo veremos como declarar, instanciar, inicializar e manipular matrizes unidimensionais.

Declarando uma matriz unidimensional

Sintaxe

tipo[] identificadorDaMatriz;

Exemplos

int[] notas;
string[] nomes;
double[] salarios;

Instanciando uma matriz unidimensional

Sintaxe

identificadorDaMatriz = new tipo[tamanhoDaMatriz];

Exemplos

notas = new int [40];
nomes = new String[10];
salarios = new double [5];


Inicializando uma matriz unidimensional

Sintaxe

identificadorDaMatriz[posicaoNaMatriz] = valor;

Exemplos

notas[1] = 7;
notas[2] = 8;
notas[3] = 6;
notas[4] = 4;
...
nomes[10] = "Carina";
nomes[1] = "Cristina";
nomes[5] = "Mariana";
...
salarios[5] = 880.00;
salarios[3] = 4522.35;
...

Declarando, instanciando e inicializando uma matriz unidimensional em um comando

Sintaxe

tipo[] identificadorDaMatriz = {lista dos valores separados por vírgula, ex: valor1, valor2, valor3, ..., valorn};

Exemplo

int[] notas = {3, 4, 7, 10, 5, 6, 4, 7, 8, 10, 9};
String[] nomes = {"Carina", "Cristina", "Mariana", "Juliana", "Carol", "Mara"};
double[] salaraios = {330.40, 444.44, 4523.55, 1851.38};

Acessando um valor em uma matriz unidimensional

Exemplos

int nota = notas[1]; //nota fica igual ao valor da segunda posição do vetor notas
System.out.println(salario[4]); //imprime a quinta posição do vetor salario

Até agora tudo bem, mas como são armazenadas as matrizes de primitivas na memória? Para visualizar melhor, veja a figura abaixo comparando como são armazenadas variáveis primitivas e matrizes de primitivas.



[Java] Criação e uso de matrizes


Os posts seguintes trataram sobre a criação e o uso de matrizes. Os tópicos abordados serão: Codificar matrizes unidimensionais (vetores), Definir valores de matrizes com atributos de comprimento e loop, Declarar e criar matrizes de tipos de primitivas, de classes e de matrizes, Explicar porque os elementos de uma matriz são inicializados, Explicar como inicializar os elementos de uma matriz, Determinar o número de elementos de uma matriz, Criar uma matriz multidimensional e Passar argumentos para o método main para o uso em um programa.