变量声明如何在switch语句中的case中起作用[duplicate]

问题描述 投票:2回答:1

这个问题在这里已有答案:

我无法理解switch语句的工作原理。下面的代码甚至可以使用a的值为4.我理解switch语句中的每个case都不是具有自己的局部作用域的块,但这是否意味着变量x被声明为甚至a不等于2?

int a = 2;
switch(a){
     case 2:
            int x = 4;
     case 3:
            x = 5;
     case 4: 
            x  = 7;       
}
java switch-statement
1个回答
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

交换机中变量声明的范围将影响交换机中的以下语句或代码行。这是因为,如果变量声明它将在大括号中定义范围。

案例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是局部变量。

© www.soinside.com 2019 - 2024. All rights reserved.