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
switch
statement, all of the following must be true or a compile-time error occurs:
Every case constant associated with the
switch
statement must be assignment compatible with the type of theswitch
statement'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