This week's book giveaway is in the Testing forum. We're giving away four copies of Data Structures the Fun Way: An Amusing Adventure with Coffee-Filled Examples and have Jeremy Kubica on-line! See this thread for details.
I think the "rules" applying to this situation have to do with conversions, as described in the Java Language Specification.
Assignment conversion occurs when the value of an expression is assigned (�15.26) to a variable...
...if the expression is a constant expression (�15.28) of type byte, short, char or int ... a narrowing primitive conversion may be used if the type of the variable is byte, short, or char, and the value of the constant expression is representable in the type of the variable.