Dominando Arrays com Java

Array: Conjunto de variáveis aninhadas possibilitando a manipulação mais facilitada.

A declaração simples de um array em Java é:

Forma correta:

int [] array = new int[5];

Forma porca:

int array [] = new int[5];

Na forma correta o programador vai analisar o código e já vai perceber que é um array, na forma porca não vai estar muito claro que a variável é um array, olhando rapidamente a variável parece do tipo int. É importante deixar claro que ambas compilam.

Um detalhe muito importante!

Na declaração de um array, é importante que usemos a sempre os [] logo após o tipo da variável, pois se declararmos depois se houver uma variável declarada junto com o outro array, ela será do tipo declarado, mas não será um array!

int array [], arrayCamuflado;

Nesse exemplo de cima, a variável arrayCamuflado é um tipo int e não um array!Pois os colchetes ficaram logo após o identificador e não antes do tipo.

Nesse exemplo abaixo é justamente o contrário, a variável arrayDeVerdade como o próprio nome diz, também é um array pois os colchetes foram declarados após o tipo:

int[] array , arrayDeVerdade;
int[][] array [], arrayDeVerdade; // Nesse caso a variável
//arrayDeVerdade terá duas dimensões([][]),
//o terceiro colchete é válido apenas pra variável array.

Matriz no Java:

Forma correta:

int [][] matriz = new int [2][2];
int [][][][][] matrizX = new int [7][7][7][7][7]

Forma porca:

Integer array7[][] = new Integer[2][50];
int[] matriz [] = new int [2][]; // Também compila perfeitamente

No Java os Arrays bidimensionais ou de mais dimensões, são na verdade arrays de arrays, ou seja os arrays guardam referências uns dos outros.

A declaração a seguir também é válida:

int[] matriz [] = new int [2][];

Outra regra extremamente importante:
Os arrays só podem ser inicializados em seu índice quando forem instanciados.
Por exemplo:

Válido:

int [] array = new int[5];

Inválido:

int [5] array = new int [5];

Também é possível usar polimorfismo nos arrays:

Considerando que a classe Animal é pai de Dog:

Animal [] animais = new Dog [5];

Lembre-se, todas as variáveis do tipo array são inicializadas com o valor padrão quando declaradas, não importando ser variáveis de instância (atributos) ou variáveis locais de métodos, não importa onde:

Tipo Valor padrão
variável de referência de objeto null
byte, short, int, long 0
float, double 0.0
boolean false
char /u0000′

Arrays anônimos

Pode-se utilizar os Arrays inicializando-os diretamente instanciando-os como Arrays anônimos, instanciar de forma anônima é instanciar de forma que não seja preciso armazenar a instância em outra variável, é útil quando já sabemos que vamos utilizar somente uma vez, pois após o uso o objeto ficará inacessível:

new int [] {5,6,7};

Inicialização do array diretamente em uma variável

int [] array = {4,6,7,7};
int [] array = new int [] {5,6,8,9};

A atribuição de um Array para outro deve ser feita se e somente se as dimensões forem iguais e seus tipos forem iguais ou covariantes (subclasses):

Double [] array = new Double [5];
Object [] objects = new Integer[5]; // Aqui é aplicado o polimorfismo, é perfeitamente válido pois Integer é um Object, todas as classes são.

array = objects; // Inválido, Integer não é um Double.

Atribuição válida:

Boolean [][] array = new Boolean[5][50];
Boolean [][] array2 = new Boolean[5][77];
array = array2;

Referência: SCJP 6 Kathy Sierra

Dominando Arrays com Java

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s