java switch case语句是否为负int值执行多个case?

Mar*_*ler 6 java int switch-statement

我只是在我的java代码中运行一些奇怪的东西:

switch (result) {
            case 0:
                result_amount = 500;
            case 1:
                result_amount = 600;
            case -1:
                result_amount = 700;
    } 
Run Code Online (Sandbox Code Playgroud)

result来自原始类型int.对于价值1 case 1case -1执行.

这是正常的开关案例行为吗?如果是的话:为什么?

dot*_*vav 9

您需要breakcase块后使用关键字:

switch (result) {
        case 0:
            result_amount = all_amounts[i];
        break;
        case 1:
            result_amount = all_amounts[i];
        break;
        case -1:
            result_amount = all_amounts[i+1];
} 
Run Code Online (Sandbox Code Playgroud)

switch语句将跳转到正确的case标记,然后执行后面的所有代码,忽略潜在的其他case标记.您可以将该switch语句视为一个语句goto.