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

Written by
Rafael del Nero
Join the discussion

Senior Java Interview Questions from Global Companies

Includes detailed answers and practical explanations from real interviews.

Delivered to your email within minutes.