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.