My wording was confusing and I'm still not sure if I really wrote what I meant.
For simplicity's sake, let's change your code to not use the "for" loop:
int i = 0;
System.out.println(i);
i = i++;
System.out.println(i);
Now let's take this in steps.
Step 1) "i" is initialized to 0 and we print it out
Step 2) "++" has higher precedence than "=", so it is done first and "i" is incremented.
Step 3) "=" now evaluates "i++", which is 0 (the postfix operator evaluates to what it was before incrementing) and this 0 is set to "i"
Step 4) 0 is printed because "i" is 0
In C/C++, your loop would give you what you expected though.