Wow, it's bad enough I have to be correct, now I have to explain myself?
In the first, the post-increment operator shows how it operates even within one statement. The original value, 1, gets loaded, then a is incremented to 2. 2 is then added to 1, and summed, following which it is incremented again. The result of the sum is 3, because the second increment occurs last.
The second one's the easiest to see; RHS assignment precedes addition. a gets set to 4, then added to another a. Voila, 8.
In case 3, it's the reverse, the addition comes first, so it's 2 and then the re-assigned four.
These last two examples illustrate one important concept. If you're going to write statements like this, you're only making more work for yourself.
------------------
Michael Ernest, co-author of:
The Complete Java 2 Certification Study Guide