Given the following code, is 'a' (that is of type char) automatically promoted to int type in switch-case statement?
void testSwitch(byte x) {
switch(x) {
case 'a': // 1
case 256: // 2
default: // 3
case 1: // 4
}
}
I couldn't find whether Java SE7 mentions about that..
Thanks in advance for clarification.
Regards, Daniel
Here's what the language specification mentions about this. See this section on switch statements:
Given a
switchstatement, all of the following must be true or a compile-time error occurs:
Every case constant associated with the
switchstatement must be assignment compatible with the type of theswitchstatement's Expression (§5.2)....
which means that a narrowing conversion will apply to the char value 'a'. Its numeric value of 97 is representable as a byte. The value 256 however does not fit so the compiler will throw an error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With