Pergunta

Como declarar vetores em Java?

Resposta

Um vetor (array) é uma estrutura homogênea de dados, isto é, cujos elementos são de um mesmo tipo, sendo que tais elementos são acessíveis através de um índice que representa a posição do elemento dentro do vetor.

Para declararmos um vetor em Java podemos utilizar a sintaxe abaixo:

<tipo> <nome>[] = new <tipo>[<num_elementos>];

Desejando um vetor contendo 10 elementos inteiros devemos escrever:

int v[] = new int[10];

Tal como na linguagem C, o primeiro elemento de um vetor no Java é o de índice zero, assim para o vetor "v" do exemplo temos que o primeiro elemento é referenciado por v[0], o segundo por v[1] e assim por diante até v[9] que é o décimo e último elemento deste vetor (o índice correspondente a última posição de um vetor é sempre seu número de elementos menos 1). Só podem ser acessadas as posições válidas de um vetor, isto é, dentro do intervalo [0, NumElementos-1], caso contrário um exceção indicando o uso de posições inválidas é sinalizada (java.lang.OutOfBoundException tratada no JavaFaq 0016).

O trecho de programa abaixo declara um vetor de números reais, preenchendo-o com valores correspondentes a 1/(i+1) onde i corresponde ao índice do elemento:

// declaração do vetor
double fracoes[] = new double[12];
// preenchimento do vetor
for (int i=0; i<12; i++) {
  fracoes[i] = 1 / (i + 1);
}
// exibição do conteúdo do vetor
for (int i=0; i<12; i++) {
  System.out.println("fracoes[+ i + "] = " + fracoes[i]);
}

Podem ser declarados vetores de qualquer tipo, mas é necessário um certo cuidado quando declaramos vetores de objetos quaisquer. Vetores de tipos primitivos (byte, short, int, long, float, double, char e boolean) não requerem cuidados extras além da declaração do vetor, ou seja, todos seus elementos podem ser utilizados logo após a declaração do vetor.

Já vetores de objetos são na verdade vetores de referências para os objetos, o que significa que após sua declaração todas as posições estão preenchidas com o valor null, que indica que nenhuma referência válida está contida em tal posição. Se os objetos referenciados por tais elementos do vetor forem utilizados sem que tenham sido instanciados ou sem que uma referência válida tenha sido colocada numa certa posição do vetor ocorrerá a exceção java.lang.NullPointerException (veja JavaFaq 0016) indicando a impossibilidade de se acessar um objeto válido.

O trecho abaixo cria um vetor de objetos String inicializando depois cada uma das posições com uma string:

// declaração do vetor
String valores[] = new String[5];
// preenchimento do vetor
valores[0] = new String("Zero");
valores[1] = new String("Um");
valores[2] = new String("Dois");
valores[3] = new String("Três");
valores[4] = new String("Quatro");
// exibição do conteúdo do vetor
for (int i=0; i<5; i++) {
  System.out.println(valores[i]);
}

Segue um outro exemplo onde criamos um vetor de objetos Integer inicializados posteriormente com o valor correspondente a seus índices:

// declaração do vetor
Integer valores[] = new Integer[5];
// preenchimento do vetor
for (int i=0; i<15; i++) {
  valores[i] = new Integer(i);
}
// exibição do conteúdo do vetor
for (int i=0; i<15; i++) {
  System.out.println("Posicao "+i+": "+valores[i].intValue());
}