Steven
I think your mistaken, Kevin isn't putting a smaller char into an int he's putting the larger int into a smaller char.
Kevin, the reason it works is because in the code you have you're using a literal int value so at compile time the compiler knows that this will fit into the char c. The same thing with final variables. Look at the code below and it'll show some other examples that might clear it up...
Check out this in the jls section 5.2
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 byte, short, char or 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.
hope that helps
Dave
[This message has been edited by Dave Vick (edited June 14, 2001).]