为什么我们需要在病例陈述后休息?

为什么编译器不会在交换机中的每个代码块之后自动放置break语句? 这是出于历史原因吗? 你什么时候想要执行多个代码块?


有时,将多个案例与相同的代码块相关联会很有帮助,例如

case 'A':
case 'B':
case 'C':
    doSomething();
    break;

case 'D':
case 'E':
    doSomethingElse();
    break;

等等。只是一个例子。

根据我的经验,通常情况下“跌倒”的风格很糟糕,并且有一个代码执行多个代码块,但在某些情况下可能会有用处。


历史上,这是因为case本质上是定义了一个label ,也被称为goto电话的目标点。 switch语句及其相关的例子实际上只是代表一个多路分支,其中有多个潜在的入口点进入代码流。

尽管如此,人们已经注意到几乎无限次的break几乎总是你在每个案例的结尾都会有的默认行为。


Java来自C,这是C语法。

有时候你想让多个case语句只有一个执行路径。 下面是一个示例,它会告诉你一个月中有多少天。

class SwitchDemo2 {
    public static void main(String[] args) {

        int month = 2;
        int year = 2000;
        int numDays = 0;

        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                numDays = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                numDays = 30;
                break;
            case 2:
                if ( ((year % 4 == 0) && !(year % 100 == 0))
                     || (year % 400 == 0) )
                    numDays = 29;
                else
                    numDays = 28;
                break;
            default:
                System.out.println("Invalid month.");
                break;
        }
        System.out.println("Number of Days = " + numDays);
    }
}
链接地址: http://www.djcxy.com/p/84519.html

上一篇: Why do we need break after case statements?

下一篇: What are major differences between C# and Java?