为什么Java中的“switch”依赖于“break”?
class switch1
{
public static void main(String args[])
{
int a = 10;
switch(a)
{
default: System.out.println("Default");
case -1: System.out.println("-1");
}
}
}
我知道这个程序会执行“default”和“case -1”语句,因为在匹配条件之后没有指定break(在这种情况下,在“default”之后)。
但是我不明白的是
a)为什么在switch
语句中需要break
?
b)为什么它甚至执行无效匹配条件的语句(即执行“case -1”))如果它所做的全部匹配?
有时你需要多个案例来执行相同的功能。 例如,我让用户指定模式1或模式32来表示32位模式,而模式2或模式64则指定64位模式。
switch (input) {
case 1:
case 32:
/* Do 32-bit related code */
break;
case 2:
case 64:
/* Do 64-bit related code */
break;
default:
System.out.println("Invalid input");
}
这就是休息很重要的原因。 他们告诉switch语句何时停止执行给定场景的代码。 此外,默认值通常用于交换机与任何情况不匹配的情况。
没有break
的switch
语句可以让你做这样的事情:
// Compute the most significant bit set in a number from 0 to 7
int topBit = -1;
switch(n) {
case 0:
topBit = 0;
break;
case 1:
topBit = 1;
break;
case 2:
case 3:
topBit = 2;
break;
case 4:
case 5:
case 6:
case 7:
topBit = 3;
break;
}
本质上,它可以让你创建一组标签,并在顶部有一个条件让你跳到最初的标签一次。 之后,执行一直持续到break
或到达switch
末尾。 这种技术很老旧 - 从装配时开始就已经存在,并且由于被包含在C中已经进入了Java和其他几种语言。
break语句是必需的,因为如果没有它们,switch块中的语句会落空:匹配case标签之后的所有语句都将按顺序执行,而不管后续case标号的表达式如何,直到遇到break语句为止。
请查看以下文档:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
链接地址: http://www.djcxy.com/p/84493.html