Source: Divus Blog

Divus Blog Array(Vetores)

Segundo a apostila da Academia Java:"Arrays são estruturas de dados capazes de representar uma coleção de vari&aacute;veis de um mesmo tipo."Exemplo:Se eu quisesse 5 vari&aacute;veis do tipo inteiro(int), do jeito que n&oacute;s est&aacute;vamos implementado faríamos parecido com isso:int int1,int2,int3,int4,int5; Mas seu quisesse 100 vari&aacute;veis do tipo inteito(int), teria que digitar 100 vari&aacute;veis do tipo int?Não, &eacute; para isso que serve os arrays ou vetores.Os arrays podem ser declarados da seguinte maneira:<tipo do elemento> [] <nome da vari&aacute;vel>ou tamb&eacute;m<tipo do elemento> <nome da vari&aacute;vel>[]Mas segundo a KathySierra o mais recomendado &eacute; quem tem o colchete antes do nome, ou seja o primeiro modelo.O que acabamos de fazer &eacute; como se declara um vetor, &eacute; como se você estivesse declarando uma vari&aacute;vel.int x; int[] vetorX;Dessa forma não podemos utilizar o vetor diretamente para isso precisamos construir o vetor no Heap(&eacute; onde os objetos ficam, vou explicar em um outro t&oacute;pico). Existe três maneiras de construir um array(vetor), uma delas &eacute; 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 &eacute; nosso exemplo, &eacute; uma vari&aacute;vel de referência (explicado em vari&aacute;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&aacute; sabem um pouco da linguagem c, sabem que todo array &eacute; indexado a partir do zero, portanto ele começar&aacute; na posição 0 e terminar&aacute; na posição 4, mas não custa nada lembrar n&eacute; 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&aacute;-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 &eacute; dessa forma:int[] vetor2 = {1,0,-3,5,4} Assim você j&aacute; estar&aacute; especificando o tamanho do vetor, e valores iniciais.Outra forma v&aacute;lida seria: int[] array = new int[]{1,2,3} É uma forma, para mim, talvez seja mais did&aacute;tica, porque nela você pode ver o array sendo construído atrav&eacute;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 &eacute; muito agrad&aacute;vel, tanto pela est&eacute;tica, quanto pela segurança, vai que sei l&aacute; 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&eacute;m, mas bem l&aacute; 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&eacute; da letra quer dizer.Lançada para indicar que um array foi acessado com um índice ilegal. O índice &eacute; 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 &eacute; 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&aacute; o tamanho exato do vetor.J&aacute; o nosso terceiro modelo, utilizei o for melhorado ou para os íntimos foreach, explicado tamb&eacute;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&aacute; est&aacute; meio que embutido nele.O c&oacute;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&oacute;pico acima dentro dele, talvez a imagem abaixo pode clarear um pouco mais. Vamos interpretar a imagem, a nossa vari&aacute;vel de referência vetorXY constr&oacute;i um array que dentro de cada espaço reservado para o tipo de var&aacute;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 &eacute; 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&aacute;cil de visualizar o que falamos, como mostramos nos array unidimensionais, um vetor ele pode ser construído atrav&eacute;s da declaração e a inicialização do seus valores atrav&eacute;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 &eacute; 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 &eacute; 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&oacute;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&aacute;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

Read full article »
Est. Annual Revenue
$100K-5.0M
Est. Employees
1-25
CEO Avatar

CEO

Update CEO

CEO Approval Rating

- -/100