此问题在此处已有答案:
Declaring and initializing variables within Java switches(6个答案)
23小时前关闭
int param1 = 1;
switch (param1){
case 0:
int block2 = 10; // if this line is commented gives a compilation error
System.out.println(block2);
break;
case 1:
block2 = 5; // if this line is commented below line gives a compilation error
System.out.println(block2);
break;
default:
// System.out.println(block2); // comilation error
}
字符串
我尝试调试,但没有意义,因为我没有看到变量的声明。这段代码运行在一个main
1条答案
按热度按时间nwo49xxi1#
这是
switch
表达式的一个怪癖。Java编译器允许你声明变量,并且如果它已经被初始化了,就可以引用它。这就是为什么你需要赋值它,所以为什么你的案例2
给出了一个编译错误:它看到了case0
的声明,但是没有初始化,所以你不能引用它。然而,这段代码令人困惑,你不应该这样写它。为每个
case
使用不同的变量。如果你这样做,像IntelliJ这样的IDE会生成一个警告:在一个“switch”分支中声明并在另一个分支中使用的局部变量“block2”