Iteração: Dúvida sobre um trecho!

Poderiam me explicar a função desse trecho:
vetor[i-1] = i;

Aqui está o código:

public static void main(String[] args) {
        int vetor [] = new int [5];
        for (int i =1; i<=5; i++){
            vetor[i-1] = i;   //      < ---- Aqui
        }
        for (int i =0; i<=vetor.length-1;i++){
        System.out.println(vetor[i]);

Fiquei um pouco na dúvida sobre a função dele… Enfim, agradeço desde já!

Vetores em java são indexados com base 0, ou seja, a primeira posição é 0.

No primeiro laço, você está iterando de 1 à 5 (inclusivamente), ou seja:

1, 2, 3, 4, 5

Porém, as posições do vetor são:

0, 1, 2, 3, 4

Se você utilizar vetor[i] ao invés de vetor[i-1], quando i for igual a 5, vai acontecer uma exceção, mais especificamente ArrayIndexOutOfBoundsException, pois você está acessando uma posição do vetor que não existe (a vetor[5]).

O código não está errado, mas geralmente não se itera de 1 até o final inclusivamente, mas de 0 até o final menos 1. Se você quer que o vetor tenha os números de 1 à 5, pode fazer assim para seguir a convenção:

for (int i = 0; i < 5; i++) {
    vetor[i] = i + 1; // posicao i recebe i + 1, ou seja, o vetor vai virar [1, 2, 3, 4, 5]
}
1 curtida