开发者

When are references declared in a switch statement?

To my surprise this code works fine:

int i = 2;开发者_开发技巧
switch(i) {
case 1:
    String myString = "foo";
    break;
case 2:
    myString = "poo";
    System.out.println(myString);
}

But the String reference should never be declared? Could it be that all variables under every case always are declared no matter what, or how is this resolved?


Well, it's about brackets (i.e. scope).

It's better practice, arguably, to write your statements like so:

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

(I'm not near a Java compiler right now, but that shouldn't compile).


The scope of the myString declaration is the switch block (where the { character is). If you were to write it like this, the declaration would be per-case:

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

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜