【发布时间】:2010-06-17 07:56:35
【问题描述】:
令我惊讶的是,这段代码运行良好:
int i = 2;
switch(i) {
case 1:
String myString = "foo";
break;
case 2:
myString = "poo";
System.out.println(myString);
}
但是 String 引用永远不应该被声明?是不是每一种情况下的所有变量总是无论如何都被声明了,或者这是如何解决的?
【问题讨论】:
-
不是所有的声明都在包含它们的 {...} 块的开头完成吗?
-
我认为朱尔斯是对的。 Java 具有静态作用域,因此控制流不会影响变量的创建(与初始化相反)。堆栈上的位置是在进入开关块时分配的。但它仍然是一种古玩。 GCC 拒绝编译等效的 C 代码,原因与(我认为)Java 拒绝编译
if(someBool) String s = "foo";的原因相同
标签: java switch-statement