为什么开关执行不匹配的(整数类型)大小写?

问题描述 投票:0回答:3

我有些困惑,为什么所有的情况都在这里执行,即使那些不匹配的情况也要在这里删除break语句:

int i = 0;
    switch ( i ) {
        case 0: System.out.print (i) ;
        case 1: System.out.print (i) ;
        case 2: System.out.print (i) ;
        case 3: System.out.print (i) ;
        default : System.out.print (i) ;
    }

此代码打印出值i的5倍。如果要在案例0之后添加一个中断,它将只输出一次值。

阅读一些书籍中的文档和功能说明,我希望它只打印匹配的情况。

是因为以某种方式枚举?很抱歉,我找不到更好的解释,而且已经进行了广泛的搜索,因此我认为以前已经有人问过它,我也不擅长搜索,或者它太基础了。

java switch-statement
3个回答
2
投票

每次读取后必须输入break命令,以退出switch

int i = 0;
    switch ( i ) {
        case 0: System.out.print (i) ;
        break ;
        case 1: System.out.print (i) ;
        break ;
        case 2: System.out.print (i) ;
        break ;
        case 3: System.out.print (i) ;
        break ;
        default : System.out.print (i) ;
       break ;
    }

0
投票

I java,switch语句,一旦与case匹配,则执行匹配子句后的所有case子句。这是预期的行为。如果需要停止此操作,则在每个case处中断,以便一旦匹配case,它将仅执行case,然后从switch块中断。

这是来自官方的javadoc

break语句是必需的,因为没有它们,开关块中的语句会掉入:匹配的case标签之后的所有语句将按顺序执行,而不管后续case标签的表达如何,直到遇到break语句为止。

尝试使用不同的i值的代码,您将亲自查看switch的行为。


0
投票

I java,switch语句,一旦与case匹配,则执行匹配子句后的所有case子句

© www.soinside.com 2019 - 2024. All rights reserved.