何时在switch语句中声明引用?

时间:2010-06-17 07:56:35

标签: java switch-statement

令我惊讶的是,这段代码运行良好:

int i = 2;
switch(i) {
case 1:
    String myString = "foo";
    break;
case 2:
    myString = "poo";
    System.out.println(myString);
}

但是永远不应声明String引用?是不是每个案例下的所有变量都被声明,无论是什么,或者如何解决?

2 个答案:

答案 0 :(得分:7)

嗯,这是关于括号(即范围)。

可以说,更好的做法是写下你的陈述:

int i = 2;
switch(i) {
    case 1: {
        String myString = "foo";
        break;
    }
    case 2: {
        myString = "poo";
        System.out.println(myString);
    }
}

(我现在不在Java编译器附近,但不应该编译)。

答案 1 :(得分:3)

myString声明的范围是switch块({character is)。如果你这样写,那么声明就是每个案例:

int i = 2;
switch(i) {
    case 1: {
        String myString = "foo";
        break;
    }

    case 2: {
        String myString = "poo";
        System.out.println(myString);
    }
}