Segundo a apostila da Academia Java:"Arrays são estruturas de dados capazes de representar uma coleção de variáveis de um mesmo tipo."Exemplo:Se eu quisesse 5 variáveis do tipo inteiro(int), do jeito que nós estávamos implementado faríamos parecido com isso:int int1,int2,int3,int4,int5; Mas seu quisesse 100 variáveis do tipo inteito(int), teria que digitar 100 variáveis do tipo int?Não, é para isso que serve os arrays ou vetores.Os arrays podem ser declarados da seguinte maneira:<tipo do elemento> [] <nome da variável>ou também<tipo do elemento> <nome da variável>[]Mas segundo a KathySierra o mais recomendado é quem tem o colchete antes do nome, ou seja o primeiro modelo.O que acabamos de fazer é como se declara um vetor, é como se você estivesse declarando uma variável.int x;
int[] vetorX;Dessa forma não podemos utilizar o vetor diretamente para isso precisamos construir o vetor no Heap(é onde os objetos ficam, vou explicar em um outro tópico). Existe três maneiras de construir um array(vetor), uma delas é utilizando a palavra-chave "new" seguida pelo tipo do array, com colchetes informando o tamanho do array.
int[] vetorX = new int[5]; //construimos um vetor com tamanho 5 O vetorX, que é nosso exemplo, é uma variável de referência (explicado em variáveis), por isso ele vai para o heap, como mostrado na figura a baixo. Ao inicializarmos o nosso array(vetor) utilizando a palavra reservada new, todos os elementos do array são inicializados seguindo a seguinte tabela de valores de inicialização. Talvez as pessoas que já sabem um pouco da linguagem c, sabem que todo array é indexado a partir do zero, portanto ele começará na posição 0 e terminará na posição 4, mas não custa nada lembrar né Agora sim podemos utilizar este vetor, agora podemos atribuir valores a ele. Para atribuir um valor de array segundo a apostila da Academia Java você deve referenciá-lo utilizando o seu índice como exemplo a seguir:int[] vetorX = new int[5];
vetor[0] = 5;
vetor[1] = 1;
vetor[2] = 3;
vetor[3] = -10;
vetor[4] = 11; A segunda maneira de construir é dessa forma:int[] vetor2 = {1,0,-3,5,4} Assim você já estará especificando o tamanho do vetor, e valores iniciais.Outra forma válida seria: int[] array = new int[]{1,2,3} É uma forma, para mim, talvez seja mais didática, porque nela você pode ver o array sendo construído através da palavra reservada new e ao mesmo tempo inicializada com valores que você deseja. Utilizamos bastante os laços para percorrer um vetor: public class ImprimindoArrayDeVariasFormas {
public static void main(String[] args) {
int[] vetor = {1,8,6,4,9};
for(int i = 0; i < 5 ;i++){
System.out.print(vetor[i]);
}
System.out.println();
for(int i = 0; i < vetor.length; i++){
System.out.print(vetor[i]);
}
System.out.println();
for(int i : vetor){
System.out.print(i);
}
}
} O primeiro for muitos programadores que estão começando usam, mas para mim, não é muito agradável, tanto pela estética, quanto pela segurança, vai que sei lá o programador não presta atenção e na parte de condição do for(Controle de fluxo parte 2), coloca um tamanho maior de quando ele inicializou o vetor onde tem o 5 coloca-se 6 no lugar , se ele fizer isso vai ser lançada uma exceção como essa: (vou explicar o assunto de Exceções também, mas bem lá para frente) . Como vocês podem ver na figura, tem escrito o seguinte ArrayIndexOutOfBoundException, que no site oracle diz o seguinte:Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.Que ao pé da letra quer dizer.Lançada para indicar que um array foi acessado com um índice ilegal. O índice é negativo ou maior do que ou igual ao tamanho do array.Por isso que eu mostrei os outros dois modelos para imprimir um vetor o segundo, na parte da condição (vetor.length), length quer dizer comprimento, length é uma propriedade que retorna o comprimento ou tamanho exato do vetor, no nosso caso o nosso vetor tem tamanho 5, então ele retorna 5 na parte da condição.Vocês podem fazer este teste:System.out.println(vetor.length); E vão ver que retornará o tamanho exato do vetor.Já o nosso terceiro modelo, utilizei o for melhorado ou para os íntimos foreach, explicado também no final na parte de Controle de fluxo parte II, como vocês podem ver com o exemplo, ele não utiliza nem a condição e nem a parte de incremento, tudo isso porque já está meio que embutido nele.O código compilado, sem erro: Arrays bidimensionaisJava tem uma maneira peculiar para trabalhar com arrays bidimensionais, ele trabalha com array dentro de um outro array.Vish! Como assim?Quando instanciamos um array, podemos colocar qualquer tipo mencionados no tópico acima dentro dele, talvez a imagem abaixo pode clarear um pouco mais. Vamos interpretar a imagem, a nossa variável de referência vetorXY constrói um array que dentro de cada espaço reservado para o tipo de varável tem um outro array, ou seja no vetorXY[0] dentro dele tem um outro vetor de tamanho de tamanho 3, e assim respectivamente no vetorXY[1] e no vetorXY[2], na nosso imagem os três arrays criados dentro do nosso vetorXY, foram inicializados com os valores 1,2,3.Espero que a imagem tenha ajudado um pouco, porque agora vamos mostrar como podemos declarar e inicializar um array bidimensional.1. Formaint[][] vetorXY = new int[3][3];
vetor[0][0] = 1;
vetor[0][1] = 2;
vetor[0][2] = 3;
vetor[1][0] = 1;
vetor[1][1] = 2;
vetor[1][2] = 3;
vetor[2][0] = 1;
vetor[2][1] = 2;
vetor[2][2] = 3; Dessa forma não fica muito visível o que acabamos de falar sobre um vetor dentro do outro, mas é o jeito mais simples de declarar e inicializar, com o valores padrão, um vetor bidimensional.2. Forma int[][] vetorXY = {{1,2,3},{1,2,3},{1,2,3}}; Dessa forma fica um pouco mais fácil de visualizar o que falamos, como mostramos nos array unidimensionais, um vetor ele pode ser construído através da declaração e a inicialização do seus valores através de chaves, como mostrado no exemplo a cima, como vocês podem observar temos tem uma chave externa, e dentro dela temos outras três chaves com seu valores, cada chave dentro da chave externa é um vetor sendo inicializado com seus valores.3. Formaint[][] vetorXY = new int[3][]
vetorXY[0] = new int{1,2,3};
vetorXY[1] = new int{1,2,3};
vetorXY[2] = new int{1,2,3}; Na linha 1 é a construção do array principal, por isso precisamos informar pelo menos o seu tamanho, aí se quisermos colocar outros arrays dentro dele, podemos fazer como da forma das linhas 3,5,7 você construir um array de tamanho que quiser, como mostra o código abaixo:int[][] calendario = new int [12][];
calendario[0] = new int[31];
calendario[1] = new int[28];
calendario[2] = new int[31];
calendario[3] = new int[30];
calendario[4] = new int[31];
calendario[5] = new int[30];
calendario[6] = new int[31];
calendario[7] = new int[31];
calendario[8] = new int[30];
calendario[9] = new int[31];
calendario[10] = new int[30];
calendario[11] = new int[31];Como vocês podem ver eu criei um array principal com tamanho 12, e dentro fui criando vários arrays com tamanhos diferentes. Fontes:Certificação Sun para programador Java 6 Guia de Estudo, Autor(a): Kathy Sierra.Apostila Academia Java.Professor Rodrigo Diniz