你刚刚作为初学者学习java,今年秋天的事情让我很困惑。
所以人们会说,如果你不添加"休息"在switch中声明,它会自动流经所有情况。
case 2:
// Do Something A
case 3:
// Do Something B
break;
但是,不应该表示像#34;如果找到目标,那么呢?"。在这种情况下,即使我在案例2之后没有休息,那么整数2仍然不符合条件案例3对吗? 那么,即使它不符合条件,为什么它会自动流过B做一些事情"案例3"?
感谢您帮助新手!
答案 0 :(得分:2)
这是Java的C ++语言遗产,后者又从C语言继承而来。
如今,突破的实际用法很少见,有些编辑甚至会在遗失的break
语句中添加警告(空case
除外,例如case 1: case 2 : ...
)。
另请参阅:https://softwareengineering.stackexchange.com/questions/162574/why-do-we-have-to-use-break-in-switch
答案 1 :(得分:2)
您可以将案例视为您输入交换机的点以及您离开它的中断点。在许多情况下,它可能有用,例如你有一定程度的积分奖励,即3分赢得一只猫,4胜一只猫和一只狗,5胜一只猫你可以写一只狗和一只猴子:
switch(points){
case 5:
win(monkey);
case 4:
win(dog);
case 3:
win(cat);
}
答案 2 :(得分:1)
从某种意义上说,认为代码足够智能,可以到达需要的位置,但又不够智能,无法返回。一旦它进入并完成了它的工作,就需要告诉执行线程退出,否则它将继续执行它旁边的任何代码。
因此,请始终使用break
语句。
case 2: // execute whatever is here..
break; // now get out
case 3: // so that this doesn't get executed
break;