Usando uma matriz
Agora que sabemos como criar um array, vamos tentar acessar um:
4: String[] mammals = {"monkey", "chimp", "donkey"};
5: System.out.println(mammals.length); // 3
6: System.out.println(mammals[0]); // monkey
7: System.out.println(mammals[1]); // chimp
8: System.out.println(mammals[2]); // donkey
A linha 4 declara e inicializa o array. A linha 5 nos diz quantos elementos o array pode segurar. O restante do código imprime a matriz. Os elementos são indexados começando com 0.
Isso deve ser familiar em String e StringBuilder, que também começam a contar com 0.
Essas classes também contavam length como o número de elementos.
Para ter certeza de que você entende como o comprimento funciona, o que você acha que isso imprime?
String[] birds = new String[6];
System.out.println(birds.length);
A resposta é 6. Mesmo que todos os 6 elementos da matriz sejam nulos, ainda há 6 deles. length não considera o que está no array; considera apenas quantos slots foram alocados.
É muito comum usar um loop ao ler ou gravar em um array. Este loop define cada elemento de número a 5 maior que o índice atual:
5: int[] numbers = new int[10];
6: for (int i = 0; i < numbers.length; i++)
7: numbers[i] = i + 5;
A linha 5 simplesmente instancia uma matriz com 10 slots. A linha 6 é um loop for usando um extremamente padrão comum. Ele começa no índice 0, que é onde um array também começa. Continua, um de cada vez, até atingir o final do array. A linha 7 define o elemento atual de numbers.
O exame testará se você está sendo observador tentando acessar elementos que não estão na matriz. Você pode dizer por que cada um deles lança um ArrayIndexOutOfBoundsException para nossa matriz de tamanho 10?
numbers[10] = 3;
numbers[numbers.length] = 5;
for (int i = 0; i <= numbers.length; i++) numbers[i] = i + 5;
O primeiro deles está tentando ver se você sabe que os índices começam com 0. Já que temos 10 eleem nosso array, isso significa que apenas números [0] através de números [9] são válidos. O segundo exemplo assume que você é esperto o suficiente para saber que 10 é inválido e o disfarça usando o comprimento variável. No entanto, o comprimento é sempre mais um que o índice máximo válido.
Finalmente, o loop for usa incorretamente <= em vez de < , que também é uma maneira de se referir a ele 10º elemento