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