05 - Vetores
Aprenda a armazenar e gerenciar coleções de dados usando vetores.
Vetores permitem que você armazene vários valores do mesmo tipo em uma única variável. Pense em um vetor como uma fileira de caixas, cada uma segurando um item.
Criando Vetores
Método 1: Declarar e Inicializar separadamente
int[] números; // Declare
números = new int[5]; // Crie um vetor com 5 espaçosMétodo 2: Tudo de uma vez
int[] numbers = new int[5];Método 3: Com os valores iniciais
int[] numbers = {10, 20, 30, 40, 50};Quando você cria um vetor, seu tamanho é fixo. Você não pode adicionar elementos além do limite definido!
int[] inventory = new int[9]; // Sempre tem exatamente 9 espaçosAcessando elementos do vetor
Arrays usam números índice a partir de 0:
String[] players = {"Alice", "Bob", "Charlie"};
System.out.println(players[0]); // "Alice"
System.out.println(players[1]); // "Bob"
System.out.println(players[2]); // "Charlie"Representação Visual
| Índice | 0 | 1 | 2 |
|---|---|---|---|
| Valor | "Alice" | "Bob" | "Charlie" |
Modificando os Valores do Vetor
int[] saude = {100, 80, 90};
saude[1] = 60; // Altera a saúde do Bob para 60
System.out.println(saude[0]); // 100
System.out.println(saude[1]); // 60
System.out.println(saude[2]); // 90Comprimento do Vetor
Use .length para obter o tamanho de um vetor:
int[] scores = {45, 67, 89, 92, 55};
System.out.println(scores.length); // 5Observe que não há parênteses! É array.length, não array.length().
Repetição Sob Vetores
Usando o Laço For
String[] items = {"Sword", "Shield", "Potion"};
for (int i = 0; i < items.length; i++) {
System.out.println(items[i]);
}Usando o Laço For Aprimorado (For-Each)
String[] items = {"Sword", "Shield", "Potion"};
for (String item : items) {
System.out.println(item);
}O laço aprimorado para é mais simples e mais seguro, mas você não pode modificar a vetor ou saber o índice atual.
// Quando você precisa do índice
for (int i = 0; i < items.length; i++) {
System.out.println(i + ": " + items[i]);
}
// Quando você só precisa dos valores
for (String item : items) {
System.out.println(item);
}Vetores Multidimensionais
Vetores podem conter outros vetores, criando uma grid:
int[][] grid = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(grid[0][0]); // 1
System.out.println(grid[1][2]); // 6
System.out.println(grid[2][1]); // 8Representação Visual
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 1 | 2 | 3 |
| 1 | 4 | 5 | 6 |
| 2 | 7 | 8 | 9 |
Repetição Sob Vetores 2D
int[][] grid = {
{1, 2, 3},
{4, 5, 6}
};
for (int row = 0; row < grid.length; row++) {
for (int col = 0; col < grid[row].length; col++) {
System.out.print(grid[row][col] + " ");
}
System.out.println();
}Exemplos práticos
Sistema de Inventário de Jogador
String[] inventory = new String[9]; // 9 slots de hotbat
// Adiciona itens
inventory[0] = "Diamond Sword";
inventory[1] = "Shield";
inventory[8] = "Food";
// Mostrar inventário
for (int i = 0; i < inventory.length; i++) {
if (inventory[i] != null) {
System.out.println("Slot " + i + ": " + inventory[i]);
} else {
System.out.println("Slot " + i + ": Empty");
}
}Encontrar a maior pontuação
int[] scores = {45, 92, 67, 88, 55, 71};
int highest = scores[0];
for (int i = 1; i < scores.length; i++) {
if (scores[i] > highest) {
highest = scores[i];
}
}
System.out.println("Maior pontuação: " + highest);Calcular média
double[] temperatures = {23.5, 25.0, 22.8, 24.3, 26.1};
double sum = 0;
for (double temp : temperatures) {
sum += temp;
}
double average = sum / temperatures.length;
System.out.println("Temperatura média " + average);Grid de Blocos (Matriz 2D)
String[][] terrain = new String[5][5];
// Preencher com grama
for (int x = 0; x < 5; x++) {
for (int z = 0; z < 5; z++) {
terrain[x][z] = "grass";
}
}
// Botar um pouco de pedra
terrain[2][2] = "stone";
terrain[1][3] = "stone";
// Mostrar grid
for (int x = 0; x < terrain.length; x++) {
for (int z = 0; z < terrain[x].length; z++) {
System.out.print(terrain[x][z] + " ");
}
System.out.println();
}Operações Comuns de Vetor
Copiar um Vetor
int[] original = {1, 2, 3, 4, 5};
int[] copy = original.clone();
// Ou manualmente
int[] copy2 = new int[original.length];
for (int i = 0; i < original.length; i++) {
copy2[i] = original[i];
}Procurar por um valor
String[] items = {"Sword", "Shield", "Potion", "Bow"};
String target = "Potion";
int foundIndex = -1;
for (int i = 0; i < items.length; i++) {
if (items[i].equals(target)) {
foundIndex = i;
break;
}
}
if (foundIndex != -1) {
System.out.println("Encontrado no índice: " + foundIndex);
} else {
System.out.println("Não encontrado");
}Contar ocorrências
String[] blocks = {"stone", "dirt", "stone", "grass", "stone"};
String searchFor = "stone";
int count = 0;
for (String block : blocks) {
if (block.equals(searchFor)) {
count++;
}
}
System.out.println(searchFor + " aparece " + count + " vezes");Limitações do Vetor
Vetores não podem crescer ou diminuir. Se você precisar de flexibilidade, você aprenderá mais tarde sobre ArrayList!
int[] numbers = new int[5];
// Não pode adicionar um 6º elemento!
// Se voce precisar de mais espaço, crie um nova array
int[] bigger = new int[10];
for (int i = 0; i < numbers.length; i++) {
bigger[i] = numbers[i];
}