15.27 Constant Expression
Compile-time constant expressions are used in case labels in switch statements (�14.9) and have a special significance for assignment conversion (�5.2).
5.2 Assignment Conversion
In addition, a narrowing primitive conversion may be used if all of the following conditions are satisfied:
* The expression is a constant expression of type int.
* The type of the variable is byte, short, or char.
* The value of the expression (which is known at compile time, because it is a constant expression) is representable in the type of the variable.