AFF Education Construa seu Futuro

Aula 52 - Array Unidimensional (Vetor)

Array Unidimensional - Vetor

Um array unidimensional (ou vetor) é uma estrutura de dados que armazena uma coleção de elementos do mesmo tipo em sequência. Pense nele como uma fileira de caixas numeradas, onde cada caixa pode guardar um valor.

Características principais:

Como os Elementos de um Vetor São Organizados

Cada elemento de um vetor ocupa uma posição numerada, chamada de índice. O índice sempre começa em zero — não em 1. Isso significa que o primeiro elemento está na posição 0, o segundo na posição 1, e assim por diante.

Considere o vetor abaixo:

int[] numeros = { 10, 20, 30, 40, 50 };
Linha Pos. 0 Pos. 1 Pos. 2 Pos. 3 Pos. 4
Índice 01234
Elemento (valor) 1020304050
For tradicional numeros[0] numeros[1] numeros[2] numeros[3] numeros[4]
For-each numero = 10 numero = 20 numero = 30 numero = 40 numero = 50

For tradicional vs For-each: Com for (int i = 0; i < numeros.length; i++), você usa numeros[i] para acessar cada elemento pelo índice. Com for (int numero : numeros), a variável numero já recebe automaticamente cada valor, sem precisar do índice.

Atenção ao índice zero: Um vetor com 5 elementos vai do índice 0 ao índice 4. Acessar numeros[5] causaria um erro ArrayIndexOutOfBoundsException, pois essa posição não existe!

Sintaxe para Declarar Vetores

Existem três formas principais de declarar e inicializar vetores em Java:

Forma 1: Declaração com tamanho

public class DeclaracaoVetor1 {
    public static void main(String[] args) {
        // Declarando um vetor de 5 posições
        int[] numeros = new int[5];
        
        // Todos os elementos são inicializados com 0
        System.out.println("Vetor criado com valores padrão:");
        for (int i = 0; i < numeros.length; i++) {
            System.out.println("numeros[" + i + "] = " + numeros[i]);
        }
    }
}

Vetor criado com valores padrão:

numeros[0] = 0

numeros[1] = 0

numeros[2] = 0

numeros[3] = 0

numeros[4] = 0

Forma 2: Declaração com valores iniciais

public class DeclaracaoVetor2 {
    public static void main(String[] args) {
        // Declarando e inicializando em uma linha
        int[] numeros = {10, 20, 30, 40, 50};
        
        // O tamanho é automaticamente definido
        System.out.println("Tamanho do vetor: " + numeros.length);
        
        System.out.println("\nElementos do vetor:");
        for (int i = 0; i < numeros.length; i++) {
            System.out.println("numeros[" + i + "] = " + numeros[i]);
        }
    }
}

Tamanho do vetor: 5

Elementos do vetor:

numeros[0] = 10

numeros[1] = 20

numeros[2] = 30

numeros[3] = 40

numeros[4] = 50

Forma 3: Declaração em duas etapas

public class DeclaracaoVetor3 {
    public static void main(String[] args) {
        // Primeiro declara
        int[] numeros;
        
        // Depois inicializa
        numeros = new int[]{15, 25, 35, 45, 55};
        
        System.out.println("Vetor inicializado:");
        for (int numero : numeros) {
            System.out.println(numero);
        }
    }
}

Vetor inicializado:

15

25

35

45

55

Construindo um Vetor com Loop For

Podemos usar loops para preencher vetores dinamicamente. A cada iteração, o índice i aponta para a posição que está sendo preenchida. Veja como o vetor fica organizado após o loop:

Linha Pos. 0Pos. 1Pos. 2Pos. 3 Pos. 4Pos. 5Pos. 6Pos. 7 Pos. 8Pos. 9
Índice (i) 01234 56789
Valor gerado
(i+1)×5
510152025 3035404550
For tradicional numeros[0]numeros[1] numeros[2]numeros[3] numeros[4]numeros[5] numeros[6]numeros[7] numeros[8]numeros[9]

Como funciona a fórmula (i + 1) * 5? Quando i = 0, o resultado é (0+1)*5 = 5. Quando i = 1, é (1+1)*5 = 10. E assim por diante — a fórmula garante que os valores comecem em 5 (e não em 0) e subam de 5 em 5.

public class ConstruindoVetor {
    public static void main(String[] args) {
        // Criando vetor de 10 posições
        int[] numeros = new int[10];
        
        // Preenchendo com valores múltiplos de 5
        for (int i = 0; i < numeros.length; i++) {
            numeros[i] = (i + 1) * 5;
        }
        
        // Exibindo o vetor
        System.out.println("Vetor preenchido com múltiplos de 5:");
        for (int i = 0; i < numeros.length; i++) {
            System.out.println("Posição " + i + ": " + numeros[i]);
        }
    }
}

Vetor preenchido com múltiplos de 5:

Posição 0: 5

Posição 1: 10

Posição 2: 15

Posição 3: 20

Posição 4: 25

Posição 5: 30

Posição 6: 35

Posição 7: 40

Posição 8: 45

Posição 9: 50

Vetores de Diferentes Tipos

Podemos criar vetores de qualquer tipo de dado em Java. Quando vários vetores compartilham o mesmo índice para representar informações de um mesmo item, chamamos isso de vetores paralelos. O índice i conecta as informações de cada produto nos três vetores abaixo:

Linha Pos. 0Pos. 1Pos. 2Pos. 3
Índice (i) 0123
produtos[i] NotebookMouseTecladoMonitor
precos[i] 19.9929.5015.7545.00
disponivel[i] truefalsetruetrue

Vetores paralelos: Para este exemplo é necessário o for tradicional, pois o mesmo índice i precisa acessar produtos[i], precos[i] e disponivel[i] ao mesmo tempo — ou seja, as informações do mesmo produto. O for-each não fornece acesso ao índice, portanto não conseguiria correlacionar os três vetores.

public class VetoresDiferentesTipos {
    public static void main(String[] args) {
        // Vetor de double
        double[] precos = {19.99, 29.50, 15.75, 45.00};
        
        // Vetor de String
        String[] produtos = {"Notebook", "Mouse", "Teclado", "Monitor"};
        
        // Vetor de boolean
        boolean[] disponivel = {true, false, true, true};
        
        // Exibindo informações dos produtos
        System.out.println("CATÁLOGO DE PRODUTOS:");
        System.out.println("---------------------");
        
        for (int i = 0; i < produtos.length; i++) {
            String status = disponivel[i] ? "Disponível" : "Esgotado";
            System.out.println(produtos[i] + " - R$ " + precos[i] + " - " + status);
        }
    }
}

CATÁLOGO DE PRODUTOS:

---------------------

Notebook - R$ 19.99 - Disponível

Mouse - R$ 29.5 - Esgotado

Teclado - R$ 15.75 - Disponível

Monitor - R$ 45.0 - Disponível

Operações Comuns com Vetores

Vamos ver algumas operações úteis com vetores. Primeiro, observe a tabela de índices do vetor usado neste exemplo:

Linha Pos. 0Pos. 1Pos. 2Pos. 3 Pos. 4Pos. 5Pos. 6
Índice 0123456
Elemento 45126723893456
For tradicional numeros[0] numeros[1] numeros[2] numeros[3] numeros[4] numeros[5] numeros[6]
For-each numero=45 numero=12 numero=67 numero=23 numero=89 numero=34 numero=56

Uma das operações mais comuns é acumular valores para calcular a soma — e depois a média. Veja a fórmula geral e como o loop executa cada etapa:

Fórmula geral de acumulação:

soma = soma + numero

A variável soma começa em zero e, a cada iteração, recebe o valor acumulado até então somado ao próximo elemento do vetor.

Iteração Elemento atual soma (antes) Operação soma (nova)
Loop 1 45 (numeros[0]) 00 + 4545
Loop 2 12 (numeros[1]) 4545 + 1257
Loop 3 67 (numeros[2]) 5757 + 67124
Loop 4 23 (numeros[3]) 124124 + 23147
Loop 5 89 (numeros[4]) 147147 + 89236
Loop 6 34 (numeros[5]) 236236 + 34270
Loop 7 56 (numeros[6]) 270270 + 56326

⬆️ Após o Loop 7, o vetor foi percorrido por completo. O loop encerra com soma = 326, e o programa calcula a média:

média = soma ÷ numeros.length  →  326 ÷ 7 ≈ 46.57
public class OperacoesVetores {
    public static void main(String[] args) {
        int[] numeros = {45, 12, 67, 23, 89, 34, 56};
        
        // 1. Encontrar o maior valor
        int maior = numeros[0];
        for (int i = 1; i < numeros.length; i++) {
            if (numeros[i] > maior) {
                maior = numeros[i];
            }
        }
        System.out.println("Maior valor: " + maior);
        
        // 2. Encontrar o menor valor
        int menor = numeros[0];
        for (int i = 1; i < numeros.length; i++) {
            if (numeros[i] < menor) {
                menor = numeros[i];
            }
        }
        System.out.println("Menor valor: " + menor);
        
        // 3. Calcular a soma
        int soma = 0;
        for (int numero : numeros) {
            soma += numero;
        }
        System.out.println("Soma total: " + soma);
        
        // 4. Calcular a média
        double media = (double) soma / numeros.length;
        System.out.println("Média: " + media);
        
        // 5. Contar números pares
        int pares = 0;
        for (int numero : numeros) {
            if (numero % 2 == 0) {
                pares++;
            }
        }
        System.out.println("Quantidade de números pares: " + pares);
    }
}

Maior valor: 89

Menor valor: 12

Soma total: 326

Média: 46.57142857142857

Quantidade de números pares: 4

Copiando Vetores

Existem diferentes formas de copiar vetores em Java. Antes de ver o código, veja como o vetor original está organizado:

Linha Pos. 0Pos. 1Pos. 2Pos. 3Pos. 4
Índice 01234
original[i] 1020304050
copia1[i] (após loop) 1020304050
copia2[i] (após clone) 1020304050

Atenção — cópia de referência vs cópia de valor: Em Java, fazer int[] copia = original não copia o conteúdo — apenas cria outro nome apontando para o mesmo vetor na memória. Qualquer mudança em original também apareceria em copia. Para ter um vetor independente, use o loop manual ou .clone().

public class CopiandoVetores {
    public static void main(String[] args) {
        int[] original = {10, 20, 30, 40, 50};
        
        // Forma 1: Loop manual
        int[] copia1 = new int[original.length];
        for (int i = 0; i < original.length; i++) {
            copia1[i] = original[i];
        }
        
        // Forma 2: Usando clone()
        int[] copia2 = original.clone();
        
        // Modificando o vetor original
        original[0] = 999;
        
        // Verificando as cópias (não foram afetadas)
        System.out.println("Original[0]: " + original[0]);
        System.out.println("Copia1[0]: " + copia1[0]);
        System.out.println("Copia2[0]: " + copia2[0]);
    }
}

Original[0]: 999

Copia1[0]: 10

Copia2[0]: 10

Exercícios

Teste seus conhecimentos sobre arrays unidimensionais em Java:

1. Qual é a sintaxe correta para declarar um vetor de 10 inteiros?

2. Dado: double[] valores = {1.5, 2.5, 3.5};
Qual é o valor de valores[1]?

3. O que acontece quando criamos um vetor com int[] nums = new int[5];?

4. Como percorrer todos os elementos de um vetor chamado dados?

5. Qual sintaxe cria e inicializa um vetor de strings em uma linha?

Exercícios de Aplicação AFF Education

Reforce o conteúdo desta aula com mais dois exercícios práticos:

1. Dado int[] v = new int[4];, qual o valor inicial de v[0] em Java?

2. Acessar v[4] em um array de tamanho 4 (índices 0..3) lança: