Java switch语句-行为混乱

Java switch语句-行为混乱,java,switch-statement,Java,Switch Statement,对于下面的代码,将打印出10和98 int i = 10; switch(i){ default: System.out.println(100); case 10: System.out.println(10); case 98: System.out.println(98); } 我不明白为什么案例98中的代码得到执行,而案例与比较值10不匹配。对我来说,这不是很容易理解。谁能给我解释一下吗? 非常感谢。如果您不在每个

对于下面的代码,将打印出10和98

int i = 10;
switch(i){
    default:
        System.out.println(100);
    case 10:
        System.out.println(10);
    case 98:
        System.out.println(98);
}
我不明白为什么案例98中的代码得到执行,而案例与比较值10不匹配。对我来说,这不是很容易理解。谁能给我解释一下吗?

非常感谢。

如果您不在每个案例末尾加上一个分隔符,那么案例后面与
i
值匹配的所有案例也将被执行

switch(i){
    case 10:
        System.out.println(10);
        break;
    case 98:
        System.out.println(98);
        break;
    default:
        System.out.println(100);
}

难道这永远不会发生吗?由于我不再理解java switch的设计要点…@TuanLD您将默认情况放在第一位(请注意,我将其移到了最后),因此每个不是10或98的值都将导致所有3个情况都被执行。