簡體   English   中英

Java - Switch語句和花括號

[英]Java - Switch statement and curly braces

我有一個與switch-case塊中的花括號相關的問題

 switch( conditon ) { 

   case val1: {
      // something 
   }
   break;
   case val2: {
      // something 
   }
   break; 
   default:
   break;  
}

或類似的東西:

 switch( conditon ) { 

   case val1: {
      // something 
      break;
   }
   case val2: {
      // something 
      break;
   } 
   default:
   break;  
}

AI知道這兩個代碼應該以相同的方式工作,但我認為這里存在一些不合理之處。 由於斷點應該導致從花括號塊跳出,所以理論上第二個代碼應該像這樣順利:1。斷開跳出塊2的路線。切換繼續執行情況val2或默認導致在括號外沒有任何break語句。

您建議使用哪個版本,它們是否真的以同樣的方式工作?

試試這個:

{
System.out.println("A");
break;
System.out.println("B");
}

你會看到的

$ javac Y.java 
Y.java:35: error: break outside switch or loop
    break;
    ^
1 error

這意味着:您不能在塊中使用它,它與塊組合無效。

我不會把突破放在禁區之外,但我從來沒有看到編碼規則要求任何一種方式(你可以為雙方提出論據)。 也許這是因為不經常使用塊來分隔每個交換機分支的可見性。

大括號限制了變量的范圍。 並且除了if,while,switch,block之外,對流控制沒有影響,除了它們是可選的情況

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM