domingo, 12 de julho de 2009

O simples/chato Array

Olá a todos do blog, escrevendo mais sobre alguns tópicos da certificação SCJP. E o assunto de hoje é Array. Lembro de uma simples trabalho da faculdade sobre orientação a objeto que tive que fazer em todo 6 arrays. Vamos começar!
Arrays são objetos que armazenam diversas variáveis do mesmo tipo, podendo armazenar variáveis de referência, primitivos ou objetos. É bom lembrar mesmo se for criado um array de tipo primitivo, na compilação os primitivos são convertidos para as suas respectivas classes Wrappers. Exemplo. int -> Integer.
Declaração de Array:
Int [] X ou int X[] // declaração do tipo de armazenamento, int é o tipo e X é o nome do array.
Thread[] t ou Thread t[] // declaração de um array que vai armazenar objetos de Threads.
Lembrando que nunca é válido incluir o tamanho do array da declaração. Exemplo: Int [3] X;
Construção do Array:
Construir o array significa a criação do objeto na memória, através da palavra-chave new ou com o uso de uma sintaxe abreviada. Para ser criado o array é necessário informar a quantidade de elementos do array ou informar diretamente os elementos. Exemplos:
Int [] X= new int[5]; // criando um objeto array com cinco espaços para armazenamento de tipos int.
Int [] X = {2,3,4,5}; // criando um objeto array já informando quais os elementos que ficaram no objeto, sintaxe abreviada.
Pontos importantes, parte 1:
-Não informar a quantidade de elementos na construção de um array, vai gerar um erro de compilação. Exemplo: Int [] X= new int[];
-Na criação de um array que armazena referencia de objetos, exemplo: Thread[] t = new Thread[5], não esta sendo criado nenhum objeto do tipo Thread. O único objeto que foi criado, foi o t, que é o array.
Array multidimensionais
A definição de arrays multidimensionais é bem simples, são arrays com outros arrays armazenados. Exemplo: String [] [] nomes.
Inicializando um array
Inicializar um array significa armazenar os itens nele. Os itens do array são os elementos que ficaram alocados nele dependendo da declaração do tipo do array. Os itens são organizados pelo índice, sempre começando do zero. É possível acessar diretamente um elemento informando índice dele. Exemplos:
Animal [] animais = new Animal[3]; // só existe um objeto agora, que é o animais, é um array que armazenará elementos do tipo de Animal;
Animais[0] = new Animal(); // esta sendo criado um objeto do tipo de Animal e alocando ele no array animais no índice zero
Animais[1] = new Animal(); // esta sendo criado um objeto do tipo de Animal e alocando ele no array animais no índice um
Animais[2] = new Animal(); // esta sendo criado um objeto do tipo de Animal e alocando ele no array animais no índice dois
Agora esse código contém 4 objetos, um do tipo array e três do tipo de Animal.
É importante qual é o ultimo índice de um array. Tentar acessar um índice que não existe gerar um exceção do tipo ArrayIndexOutBoundsException. Exemplo:
Animal [] animais = new Animal[3];
Animais[2] = new Animal(); // o índice 2, é o ultimo índice acessível do array pois a quantidade de elementos que o array comporta no máximo 3 e lembrando que os índices começam no zero.
Animais[3] = new Animal(); // não é possível fazer isso, pois o índice de numero 3 não existe no array.
Lembrando também que os índices não podem ser numero negativos. Exemplo:
Int []teste= new int[5];
Int y = -2;
teste[y] = 3; // não é valido, porque y é o numero negativo;
Pontos importantes, parte 2:
- é possível inicializar dinamicamente os valores de um array, através de loop for e utilizando o atributo length de array. Exemplo:
Animal [] animais = new Animal[50];
for(int i = 0; i
animais[i] = new Animal(); // atribui o novo elemento Animal na posição do índice i;
-array tem o atributo length e String tem o método length(). Existe questões da prova que abordam isso.
Array de referencia a objetos

Se o tipo declarado de um array for uma classe, esse array armazenar qualquer objeto subclasse do tipo declarado. Exemplo:
class Car{}
class Gol extends Car{}
class Ferrari extends Car{}
class Aviao{}
utilizando o array: Car[]carros = new Car[4];
carros[0] = new Car();
carros[1] = new Gol();
carros[2] = new Ferrari();
Todas as declarações são verdadeiras, pois esta sendo adicionados ao array objetos que são subclasse de Car. Utilizando o código: carros[3] = new Aviao(); não é possível já que não é uma subclasse de Car.

Depois de muito escrever vou ficando por aqui. Espero ter ajudado. Lembrando que existem algumas coisas que não abortei nesse post (como procura de dados através o método binarySearch). Lembrando também que é sempre bom estudar mais um pouco sobre array antes de fazer a prova de certificação e para o dia-a-dia também.
Qualquer coisa estamos ai.

Ate à próxima.

Um comentário:

  1. Manter post nessa linha de racíocinio é uma boa. E array é algo usado constantemente então você está de parabéns!

    ResponderExcluir