Na lista de precedencia dos operadores em java, os operadores postfix “++” vem em primeiro lugar , depois vem modulo “%” e depois comparacao “==”. Mas nessa linha de codigo “if(i++ % 3 == 2)” a variavel “i” esta sendo incrementada depois que a comparacao eh feita.
Por que??
Quando o operador ++ é utilizado desta forma (i++), primeiro o valor atual da variável é utilizado na expressão para depois ela ser incrementada.
Se a intenção é incrementar a variável antes de utiliza-la na expressão, tente ++i.
pré-fixando o operador, ou seja ++i, a variável primeiro soma 1 e depois passa o valor dela.
pós-fixando, i++ a variavel primeiro passa o valor dela e depois soma 1.
Segue um exemplo:
int x, y, z;
x = 42;
y = x ++; //y recebe o valor de x (42), antes que x seja incrementado
// neste ponto, y = 42 e x = 43
z = ++x; // x é incrementado para 44 e z recebe o valor de x (44)
esse precedencia de que vc fala nao está relacionada com o pos ou pre-incremento mais sim com os operadores tipo… ==, != ou *,/,% …
(o pre e o pós-incremento estão na tabela de precedencia mas como uns dos operadores)