这个Java代码是什么意思?

Bep*_*i's 4 java syntax label case

最近我碰巧写了一段与此类似的代码:

switch (x) {
    case a: case b: case c:
    // do something
    break;
    case d: case e: case f:
    // do something
    break;
}
Run Code Online (Sandbox Code Playgroud)

然后,我错了,并写了一个类似的代码与语法错误:我忘了写case关键字:

switch (x) {
    case a: b: c:
    // do something
    break;
    case d: e: f:
    // do something
    break;
}
Run Code Online (Sandbox Code Playgroud)

此语法实际上在某些其他语言中有效,并且交换机会传递所有值.

实际上这里也是有效的,因为我没有得到任何语法错误:但是顺利执行切换的程序的错误行为,只缺少没有case关键字的值.

为什么?什么是b; c:,e:和f:意味着第二次剪辑?

它们可能是标签吗?然后,他们怎么可能在同一条线上呢?我错过了什么,我不理解这个奇怪的非错误背后?

编辑:它们似乎确实是标签.这是不寻常的,正如@Bathsheba所解释的那样,问题在于标签通常是在一行的开头.奇怪的是Java如何在我的脑海中使用这种令人困惑的语法,甚至没有显示警告.这可能会在长程序中造成很多混乱和奇怪的错误.

谢谢.

Bat*_*eba 5

在第二种情况下,b:,c:,e:,和f:标签.您可以使用breakJava中的标签,并且该语言允许您在各种位置插入标签,包括您拥有的位置.

看到标签不是从一行开始就是不寻常的,这就是全部.