在switch中的case语句中声明变量
本⼈今天在编写⼯具类时,⽆意之间发现,在Java的Swith语句的case语句中声明局部变量时出现了⼀个奇怪的问题。
废话少说,先列出例⼦,⼀看便知。
情景⼀:case 1中声明变量x,case 2中不能再声明变量x
switch (1) {
case 1:
int x = 1;
break;
case 2:
int x = 2;// 编译器会提⽰:Duplicate local variable xjava switch case string
break;
}
如是,我猜测是不是因为case 1和case 2都在switch的块中,所以case 1和case 2共享本地变量。如是,我便提出第⼆种假设。
情景⼆:case 1中声明变量x,case 2中直接使⽤变量x
switch (2) {
case 1:
int x = 1;
break;
case 2:
System.out.println(x);// The local variable x may not have been initialized
break;
}
情景⼆的结果说明,case 1中x被提前声明,但是没有进⾏case 1中指定的赋值操作。初步可以得出结论,case语句中的局部变量声明会被提前。如是对情景⼆的代码稍加修改。
情景三:case 1声明x变量,case 2赋值并使⽤
switch (2) {
case 1:
int x = 1;
break;
case 2:
x = 2;
System.out.println(x);// 正常输出2
break;
}
由此可见,进⼀步证明case中声明局部变量的语句会被提前。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。