为什么我们需要在病例陈述后休息?
为什么编译器不会在交换机中的每个代码块之后自动放置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