Pergunta

Como declarar vetores multimensionais (matrizes) em Java?

Resposta

Para declararmos um vetor multidimensional em Java podemos utilizar a sintaxe abaixo, semelhante a declaração de um vetor simples (unidimensional):

<tipo> <nome>[]..[] = new <tipo>[<dim1>][<dim2>]...[<dimN>];

Onde dim1, dim2 e dimN representam os tamanhos de cada dimensão desejada colocada num par de colchetes. Desejando uma matriz retangular de 3x4 elementos inteiros devemos escrever:

int matriz[][] = new int[3][4];

Tal como vetores unidimensionais (JavaFaq 0106) o primeiro elemento de cada dimensão é o de índice zero prosseguindo até o elemento dimN-1, ou seja, o índice correspondente a última posição de cada dimensão da matriz é sempre o tamanho desta dimensão menos 1, daí temos que só podem ser acessadas as posições dentro do intervalo [0, dimN-1], caso contrário um exceção indicando o uso de posições inválidas é sinalizada (java.lang.OutOfBoundException tratada no JavaFaq 0016).

Para a criação de vetores multidimensionais de objetos são necessários os mesmos cuidados que para vetores comuns, como comentados nos JavaFaq citados anteriormente,

Se for desejado uma matriz cujo número de colunas seja diferente para cada linha, podemos utilizar o fato que um vetor bidimensional (matriz 2D) é um vetor de vetores. Abaixo um exemplo que cria uma matriz triangular:

// Inicializacão de vetor de 4 vetores
int matrizTriang[][] = new int[4][];

for(int i=0; i<4; i++) {
// Inicialização de cada "linha"
  matrizTriang[i] = new int[i+1];
}