2011-08-09 179 views
6

我對java比較陌生。在switch聲明中,您是否必須在每個case之後放置break聲明?幫助switch語句

+3

http://download.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

回答

5

在每種情況下都不必折斷,但如果不這樣,它們會流入對方。有時候你想通過忽略中斷來將多個案例捆綁在一起。

3

你最好這樣做。否則,下一個語句也會被執行。

switch(someNumber) { 
case thisCaseMatches: 
    doThat(); 
case thisCaseDoesNotMatch: 
    shouldntExecuteYetItWillBeExecuted(); 
default: 
    alsoWillbeExecuted(); 
} 
2

語義上是的。否則,第一個匹配的後面的所有case語句都會運行。

7

不,你不需要。但是,如果省略break聲明,則將執行switch塊內的所有其餘語句,而不管其測試值是否爲case

這可能會產生意外的結果有時,如下面的代碼:

switch (grade) { 
    case 'A': 
     System.out.println("You got an A!"); 
     //Notice the lack of a 'break' statement 
    case 'B': 
     System.out.println("You got a B!"); 
    case 'C': 
     System.out.println("You got a C."); 
    case 'D': 
     System.out.println("You got a D."); 
    default: 
     System.out.println("You failed. :("); 
} 

如果你設置了grade變量「A」,這將是你的結果:

You got an A! 
You got a B. 
You got a C. 
You got a D. 
You failed. :(
3

你做如果您未通過return或其他操作退出switch聲明。

2

這是一個很好的做法,在每次陳述之後進行休息。

你不是被迫的。

但是,如果你不放置休息聲明,你已經級聯開關語句,即更多的條件可以匹配,有時這可能會導致邏輯錯誤。

但是有些人認爲級聯語句可以優化代碼,有助於編寫更少的代碼。

+0

它不是(僅)「良好實踐」,它在語義上是否需要! –