变量声明如何在switch语句中的case中工作

时间:2019-03-23 01:30:40

标签: java switch-statement

我无法理解switch语句的工作方式。下面的代码即使a的值为4也能正常工作。我知道switch语句内的每种情况都不是具有自己局部作用域的块,但这是否意味着变量x甚至被声明为a不等于2? >

int a = 2;
switch(a){
     case 2:
            int x = 4;
     case 3:
            x = 5;
     case 4: 
            x  = 7;       
}

1 个答案:

答案 0 :(得分:0)

案例1

   int a = 2;
   switch(a){

        case 2:
            int x = 4;
            // executes
        case 3:
             x = 5;
            // executes
        case 4: 
             x  = 7;
            // executes

    }

在此 value of x will be 7 because the switch won't break 中找到匹配的大小写。

案例2

如果要在2处停止执行,请执行以下操作

   int a = 2;
   switch(a){

        case 2:
            int x = 4; // variable declaration works even if case wont match. Validity inside switch for every line of code after this line
            break;
            // executes and break
        case 3:
             x = 5;
            break;
            // executes and break
        case 4: 
             x  = 7;
            break;
            // executes and break
       default:
            // write default case here
    }

由于声明的范围在整个范围内,因此不必在每个x中使用int

开关中变量声明的范围将影响开关中的以下语句或代码行。这是因为,如果 variable声明,则范围不是由花括号定义的。

案例3

   int a = 3;
   switch(a){

        case 2:
            {
                int x = 4;
                break; // u can skip this break to. Then also it will throw error.
                // x is local variable inside this braces
            }
            // executes
        case 3:
             x = 5;
            // error
        case 4: 
             x  = 7;
            // error
        System.out.println(""+x);    


    }

在上述情况下,它将通过错误。因为它的范围仅在那种情况下。 在这种情况下,变量的范围在括号内声明。因此,在大括号之外,x将不起作用。因为在这种情况下x是局部变量。