2011-08-09 143 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

它不是(仅)“良好实践”,它在语义上是否需要! –