小编Mar*_*Ion的帖子

Java开关:变量声明和范围

Java编译器如何处理以下交换机块?'b'变量的范围是什么?

请注意,'b'变量仅在switch语句的第一个分支中声明.尝试在第二个分支中声明它也会导致"重复的局部变量"编译错误.

    int a = 3;
    switch( a ) {
    case 0:
        int b = 1;
        System.out.println("case 0: b = " + b);
        break;
    case 1:
        // the following line does not compile: b may not have been initialized
        // System.out.println("case 1 before: b = " + b);
        b = 2;
        System.out.println("case 1 after: b = " + b);
        break;
    default:
        b = 7;
        System.out.println("default: b = " + b);
    }
Run Code Online (Sandbox Code Playgroud)

注意:上面的代码用java 1.6编译器编译.

java scope initialization switch-statement variable-declaration

8
推荐指数
2
解决办法
6516
查看次数