Os princípios-ativos desta questão são saber como funciona o pré-incremento e o mod ...
No caso da questão (++i), o incremento é realizado antes da operação da linha de comando, portando o valor da variável passa de 10 para 11 antes de aplicarmos o MOD.
O MOD está relacionado com a divisão de ++i por 5, retornando o resto da divisão, ou seja 11 por 5 (resto 1).
Bons estudos!
[]'s
class Static {
static { int a = 2; } // é inicializada uma variável "local" a em contexto estático, caso não tivesse sido utilizada a palavra
// chave "int", esse linha alteraria o valor da variável estática "a" de 0 para 2.
static int a, y; // declara duas variáveis de classe (contexto estático), ambas são inicializadas com valor default 0;
public static void main(String[] args) {
a--; // decrementa valor de a (0) para -1
minhaFuncao(); // pula para o código contido na funcao
System.out.println(a + y + ++a);
// a = 1
// y = 0
// ++a = 2
// resultado da saída é 3 (NÃO É 11)
}
public static void minhaFuncao() {
y = a++ + ++a;
// a++ = -1
// ++a = 1
// y = 0
}
}
Mais sobre variáveis estáticas:
https://www.baeldung.com/java-static-variables-initialization