Ok, I think I got it, but in your previous reply you said
Therefore, in an arithmetic operation, a char acts as a positive int
Well it was a somewhat ambiguous statement. After the conversion (adding two zero MS bytes), it starts as a positive int, but it does not "act" as a positive int. The arithmetic operation can result in a negative int.
Ok. That was strange of them to present char arithmetic as a special case, since they have already presented earlier the general rules which are:
The Java VM specification states the following rules for promotion in an expression of two operands, as in x+i:
*
If either operand is of type double, the other is converted to double.
*
Otherwise, if either operand is of type float, the other is converted to float.
*
Otherwise, if either operand is of type long, the other is converted to long.
*
Otherwise, both operands are converted to type int.
Which answers my original question pretty well. So same rule applies to short, byte.... right?
As for boolean arithmetic, I don't know. I am not sure how they are represented in memory.