Java switch语句-在某种情况下使用变量,在另一种情况下声明

时间:2019-07-05 19:32:31

标签: java switch-statement

我对Java并不陌生,但这是我从未见过的事情。
假设有一个switch的情况,在情况0中声明一个变量会使该变量在其他情况下可见,这很奇怪,我认为这不是Java风格。

public static void main(String[] args) {
    String _case = "case";

    switch (_case) {
        case "1":
            String foo = "foo";
            break;
        case "2":
            String bar = "bar";
            break;
        case "case":
            foo = "foo";
            System.out.println(foo);
            // System.out.println(bar); //Variable bar might not have been initialized
            break;
    }
}

如果案例1未得到验证,为什么String foo变量为何以及如何被声明?

Execute在线代码

1 个答案:

答案 0 :(得分:0)

由于您在最后一种情况下设置了foo = "foo",因此可以确保在该点实例化该变量。在最后一种情况下,没有时间实例化bar,从而给您带来此错误。这是由于在某种情况下变量的范围等于整个switch语句的范围。有关other questions about this

的更多信息