Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Declaração de um matriz
  2. Acesso/alteração aos elementos
  3. Descobrir o tamanho de uma matriz
  4. Percorrendo uma matriz
  5. Copiando uma matriz
  6. Comparando matrizes
  7. Matriz como parâmetro, argumento e retorno

Matriz ou vetor bidimensional, é um vetor contendo vetores como seus elementos. Suas dimensões podem ser vistas como linhas e colunas que armazenazem elementos justapostos.

Nesta parte vamos estudar matrizes estáticas, uma vez declarados para armazenar elementos em suas dimensões, essas não pode ser mais alteradas.

Tab. 2: Matriz de int
L/C 0 1 2
0 10 20 30
1 40 50 60
2 70 80 90

As operações mais complexas que envolvem matriz, devem ser realizadas utilizando os métodos da classe Array.

A declaração de uma matriz na linguagem Java é feita utilizando um tipo de dado desejado e suas dimensões entre [ e ]. A sintaxe é semelhante à utilizada pelas linguagens C e C++ e pode ser vista abaixo.

Uma matriz com valores iniciados devem ter seus valores delimitados por { e } , separados por (,) e terminados com (;):

Sintaxe: iniciada
tipo_dado[][] nome_matriz = {{elementos_linha1},{elementos_linhaN}};
tipo_dado nome_matriz[][] = {{elementos_linha1},{elementos_linhaN}};

Para matrizes não iniciadas, mas com espeço reservado para seus elementos, a palavra reservada new deve ser utilizada. Assim, o espaço necessário será criado em memória para posterior uso.

Sintaxe: espaço reservado
tipo_dado[][] nome_matriz = new tipo_dado[linhas][colunas];
tipo_dado nome_matriz[][] = new tipo_dado[linhas][colunas];
Exemplo 1
import java.util.Arrays;

public class Main
{
    public static void main(String[] args) 
    {
        int[][] v1 = {{1,2},{3,2}};
    }
}
Saída
-

O acesso aos elementos de uma matriz é feito utilizando suas linhas e colunas que são passados como argumento pra o indexador [], como pode ser visto na sintaxe abaixo:

Sintaxe
tipo_dado nome_matriz[linha][coluna] = valor;
tipo_dado nome_matriz[linha][coluna];
Exemplo 2
import java.util.Arrays;

public class Main
{
    public static void main(String[] args) 
    {
        int[][] mat = {{1,2},{3,2}};
        System.out.println(mat[0][0]);
    }
}
Saída
1

Como uma matriz é uma vetor de vetores, utilizando o atributo length , podemos descobrir o número de elementos que esse uma matriz possui.

Sintaxe
nome_matriz[dimensao].length();
Onde
dimensao: índice da dimensão. 0 linhas, 1 colunas
Exemplo 3
import java.util.Arrays;

public class Main
{
    public static void main(String[] args) 
    {
        int[][] mat = {{1,2},{3,2}};
        
        System.out.println(mat[0].length);
        System.out.println(mat[1].length);
    }
}
Saída
2
2

Para iterarmos ou percorrermos uma matriz em Java, podemos utilizar o comando for que foi estudado em Java Básico: Comandos de repetição. Outros comandos de repetição também podem ser usados.

Exemplo 4
import java.util.Arrays;

public class Main
{
    public static void main(String[] args) 
    {
        int[][] mat = {{1,2},{3,4}};
        
        for( int i=0; i < mat.length; i++){
            for( int j=0; j < mat[i].length; j++){  
                System.out.printf("%d ", mat[i][j]);
            }
            System.out.println();
        }
    }
}
Saída
1 2 
3 2 

Para copiarmos o conteúdo de uma matriz, podemos utilizar a classe Array que possui o métodos copyOf cuja sintaxe pode ser vista abaixo.

Sintaxe
Array.copyOf(vetor_origem, quantidade)
Onde
vetor_origem : vetor dos tipos primitivos ou objetos
quantidade: quantidade de elementos para copiar

Para uso da classe mencionada acima, é necessário fazer sua importação:

import java.util.Arrays
Exemplo 5
import java.util.Arrays;

public class Main
{
    public static void main(String[] args) 
    {
        int[][] mat = {{1,2},{3,4}};
         int[][] mat2 = new int[mat.length][];
         
        for( int i=0; i < mat.length; i++){
            mat2[i] = Arrays.copyOf(mat[i], mat[i].length);
        }
        
        for( int i=0; i < mat2.length; i++){
            for( int j=0; j < mat2[i].length; j++){  
                System.out.printf("%d ", mat2[i][j]);
            }
            System.out.println();
        }
    }
}
Saída
1 2 
3 4 

Existem outras formas para cópia de matrizes, porém serão vistas em futuras atualizações.

  1. 23/07/2025 - revisão 3 - Correções gramaticais pontuais, href de link 'Java Básico'; ajustes em sintaxes
  2. 23/09/2024 - revisão 2 - ajustes pontuais
  3. 06/02/2024 - revisão 1 - correção em navegação e erros gramaticais
  4. 04/09/2023 - versão inicial