Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida questão 2

Olá! Eu tenho uma dúvida sobre a questão número 2:

class A {
    public static void main(String[] args) {
        int[] i = {150, 151};
        i = s(i);
        System.out.println(i[1]);
    }
    static int[] s(int[] i) {
        int[] j = {i[0], i[1]};
        i[1]++;
        return j;
    }
}

Para que o valor seja atualizado quando passa pelo método static int[] s(int[] i) , seria necessário criar uma nova referência no main?

2 respostas
solução

Fala Philippo, tudo bem?

Então, a pegadinha dessa questão é que o método "s" está retornando o j ao invés do i.

static int[] s(int[] i) {
        int[] j = {i[0], i[1]}; // 150, 151
        i[1]++; // 152
        return j; // 150, 151
    }

Perceba que os i[0], i[1] são uma cópia que servem para criar um novo int[] que é retornado pelo método.

Se você trocar o retorno para i dará 152:

static int[] s(int[] i) {
        int[] j = {i[0], i[1]};
        i[1]++;
        return i;
    }

Oi, Otávio! Tudo bem, e você?

Entendi! Obrigado, Otávio!!