Java switch语句的帮助

Java switch语句的帮助,java,switch-statement,break,Java,Switch Statement,Break,我对java比较陌生。在开关语句中,是否必须在每个案例后放置一个中断语句?您不必在每个案例后中断,但如果不这样做,它们将相互流入。有时,您希望通过省略中断将多个案例捆绑在一起。这样做更好。否则,也将执行下一个语句 switch(someNumber) { case thisCaseMatches: doThat(); case thisCaseDoesNotMatch: shouldntExecuteYetItWillBeExecuted(); default: also

我对java比较陌生。在
开关
语句中,是否必须在每个
案例
后放置一个
中断
语句?

您不必在每个案例后中断,但如果不这样做,它们将相互流入。有时,您希望通过省略中断将多个案例捆绑在一起。

这样做更好。否则,也将执行下一个语句

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

语义上是的。否则,将运行第一个匹配的case语句之后的所有case语句

不,你不必。但是,如果省略
break
语句,则将执行
开关
块内的所有剩余语句,而不管测试它们所使用的
大小写

这有时会产生不期望的结果,如下代码所示:

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. :(

如果您没有使用
return
或其他操作退出
switch
语句,则可以执行此操作。

最好在每条语句后加上break

你不是被迫的

但若你们不把断开的语句放在cascade switch语句中,那个么更多的条件可以被匹配,有时这会导致逻辑错误

然而,有人认为级联语句可以优化代码,有助于编写更少的代码。

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