gpt4 book ai didi

java - 为什么在一个 case block 中定义的变量在其他 case block 中可用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:00:47 27 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Why are variables not local in case statements?

作用域 block 中定义的变量不能在其外部使用。例如,下面的代码片段是无效的:

{
int anothervar = 4;
}
{
System.out.println(anothervar);
}

但看起来 case block 不会创建单独的作用域。

switch (mode) {
case ONE:
dosomething();
return;
case TWO:
int[] someints = new int[] { 2, 3, 5, 7 };
SomeObject obj = new SomeObject();
return;
case THREE:
someints = new int[] { 1, 4, 6, 8, 9 };
obj = new SomeObject();
return;
}

为什么我不必在案例三“ block ”中声明someints
假设 mode = THREE,那么永远不会到达变量 someints 的声明,因为 case TWO,其中 someints 是声明,被跳过。或者不是吗? 它在内部是如何运作的?

(Why are variables not local in case statements? 中选择的答案表明 switch 语句在内部是一组 jump 命令,但这仍然没有解释变量 someints 的声明位置.)

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com