在switch语句中是否自动提升byte,short,char?

yeg*_*osc 7 java switch-statement type-promotion

给定以下代码,在switch-case语句中是'a'(即char类型)自动提升为int类型?

void testSwitch(byte x) {
    switch(x) {
       case 'a':   // 1
       case 256:   // 2
       default:   //  3
       case 1:    //  4
    }
Run Code Online (Sandbox Code Playgroud)

}

我无法找到Java SE7是否提到了这一点......

在此先感谢您的澄清.

问候,丹尼尔

man*_*uti 7

这是语言规范提到的内容.请参阅本节中的switch陈述:

给定一个switch语句,所有以下内容必须为true或发生编译时错误:

  • switch语句关联的每个case常量必须与switch语句的Expression(第5.2节)的类型兼容.

  • ...

这意味着缩小转换将适用于该char'a'.它的数值97可表示为a byte.256但是该值不适合,因此编译器将抛出错误.