7 Arrays
Coleções de tamanho fixo e acesso por índice
7.1 Objetivos de aprendizagem
Ao concluir este capítulo, você deverá ser capaz de:
- criar e inicializar arrays;
- respeitar os limites dos índices;
- escolher entre
fortradicional efor-each; - calcular soma, média, maior e menor valor;
- copiar um array sem compartilhar a mesma referência.
7.2 Tamanho fixo e índices
Um array guarda vários valores do mesmo tipo e tem tamanho fixo. Seus índices começam em zero. Em um array de quatro elementos, os índices válidos são 0, 1, 2 e 3.
A linguagem garante acesso por índice e tamanho fixo; detalhes sobre a disposição física dos objetos na memória pertencem à implementação da JVM e não são necessários para usar arrays corretamente.
7.3 Inicialização e valores padrão
Arrays de tipos primitivos recebem valores padrão. Arrays de objetos recebem null até que cada posição seja preenchida.
7.4 Percorrendo com segurança
public class Capitulo06Arrays {
public static void main(String[] args) {
double[] notas = {7.0, 8.5, 10.0, 6.5};
double soma = 0.0;
double maior = notas[0];
for (double nota : notas) {
soma += nota;
if (nota > maior) {
maior = nota;
}
}
double media = soma / notas.length;
System.out.printf("Média: %.2f%n", media);
System.out.printf("Maior nota: %.2f%n", maior);
}
}Use for-each para ler todos os valores. Use o for com índice quando precisar alterar posições ou trabalhar com dois arrays em paralelo:
A condição correta é indice < comandos.length. Usar <= tentaria acessar uma posição inexistente.
7.5 Utilitários e cópia
A classe Arrays oferece ordenação, busca e representação textual:
A atribuição direta compartilha o mesmo array. Para obter uma cópia independente:
7.6 Evolução do projeto: versão 6
Use um array para armazenar os comandos obrigatórios do chatbot. Percorra-o para montar a mensagem de ajuda. O tamanho ainda é fixo, o que torna visível a limitação que será resolvida com List.
O exemplo completo está em examples/src/Capitulo06Arrays.java.
7.7 Prática verificável
Crie um array com cinco tempos de estudo, em minutos, e mostre total, média, maior e menor valor.
Casos de teste:
| Entrada | Resultado esperado |
|---|---|
{30, 40, 20, 50, 10} |
total 150, média 30 |
| um único elemento | maior, menor e média iguais ao elemento |
| array vazio | deve ser rejeitado antes de acessar o índice zero |
Antes de usar valores[0], confirme que valores.length > 0.