时间: 2007-12-17
先看看几句简单的代码
很清楚i被初始化为 2 , 所以 case 1: 里的内容不会被“执行”,最少我们可以根据 // 2 处的代码没有输出任何东西证明。
毫无疑问case 2:内的东西将会被执行,输出“j is:200”。
这里的问题是:既然case 1:里的东西不被执行,那么j何时被声明?
如果把 //3行去掉,将会输出什么?
在去掉 // 3 行之后,编译器报错,提示变量未初始化;
如果把 //3行改为 int j = 200 ; 将会输出什么?
编译器提示j已被声明过;
于是可以得出结论,switch里不被“执行”的case块里的声明语句是有效的,初始化语句和其他语句是无效的。
先看看几句简单的代码
int i=2;
switch(i)
{
case 1:
int j=100; // 1
System.out.ptintln("j is:"+j); // 2
break;
case 2:
j=200; // 3
System.out.ptintln("j is:"+j); // 4
break;
}
很清楚i被初始化为 2 , 所以 case 1: 里的内容不会被“执行”,最少我们可以根据 // 2 处的代码没有输出任何东西证明。
毫无疑问case 2:内的东西将会被执行,输出“j is:200”。
这里的问题是:既然case 1:里的东西不被执行,那么j何时被声明?
如果把 //3行去掉,将会输出什么?
在去掉 // 3 行之后,编译器报错,提示变量未初始化;
如果把 //3行改为 int j = 200 ; 将会输出什么?
编译器提示j已被声明过;
于是可以得出结论,switch里不被“执行”的case块里的声明语句是有效的,初始化语句和其他语句是无效的。