在Java中使用case时使用break的另一种方法

use*_*erS 2 java switch-statement

是否有一种替代方法可以在每种情况下都跳过“中断”,而只是暗示当发现具有相同值的个案刚刚中断时。

int w=3;
switch (w)
{
    case 1:
        System.out.println("1");
        break;
    case 2:
        System.out.println("2");
        break;
    case 3:
        System.out.println("3p");
        break;
    case 4:
        System.out.println("4");
        break;
    default:
        System.out.println("csd");
        break;
}
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

不,break不是可选的,除非您想使用下一个case标签。(好吧,除非您returnthrow来自case。)但请继续阅读...

如果你想避免写breakS,你可以使用if/ else if/ else结构,而不是:

if (w == 1) {
    System.out.println("1");
} else if (w == 2) {
    System.out.println("2");
} else if (w == 3) {
    System.out.println("3p");
} else if (w == 4) {
    System.out.println("4");
} else {
    System.out.println("csd");
}
Run Code Online (Sandbox Code Playgroud)

但是:一旦支持JEP 325 JEP 354,您将可以改为使用switch 表达式

switch (w) {
    case 1 ->  System.out.println("1");
    case 2 ->  System.out.println("2");
    case 3 ->  System.out.println("3p");
    case 4 ->  System.out.println("4");
    default -> System.out.println("csd");
}
Run Code Online (Sandbox Code Playgroud)

JEP 325是JDK 12.0.2中的预览功能,而JEP 354(对其稍有更新)是JDK 13中的预览功能。您可以像这样使用它来编译代码:

javac --enable-preview --release 13 Example.java

并像这样运行它:

java --enable-preview --release 13示例

对JEP 325使用版本13,对JEP 354使用版本14。

除上述用法外,switch表达式的有趣之处在于它们是产生值的表达式。有关详细信息,请参见JEP。