@bibiki: What I care is to learn how this actually works
Quite right. Here's how it is defined to work by the JLS:
Java Language Spec 15.14 (postfix Operators)
... the value 1 is added to the value of the variable and the sum is stored back into the variable ... The value of the postfix increment expression is the value of the variable before the new value is stored.
so yes, there is a "new block in memory", but it's used to hold the value of the expression, ie the evaluation of the postfix ++ is like this:int valueOfExpression = num;
num = num + 1;
and 15.26 (Assignment operators)
the right-hand operand is evaluated ... the result of the conversion is stored into the variable.
so after the expression is evaluated (see above) the value of the expression is stored in the LHS, ie
`num = valueOfExpression;