since
java is pass by value, the whole method call is irrelevant. so, this boils down to the
i = i++;
for that, we have a FAQ that i can never find... but basically what happens is this.
the 'i' on the right is evaluated to 0 - we remember this.
We then increment i, since post-fix increments after evaluation. i is now 1.
we then assign the value we evaluated before - which is 0 - to i. i is now 0.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors