public static void main(String[] args)
{
int num = 1;
switch (num)
{
case 0: a: b: c: abc: def: d: e: f: abcdef: System.out.println(1);
break;
default:
System.out.println(2);
break;
} }
这case后面这样写都不会报错,
num=0也能进去,打印1;
num=2的时候打印2;
num=97的时候也是打印2;java中switch语句可以这样写吗??求大虾们帮忙解释。
IDE应该会提示你增加unused了吧。
结合break或者continue之后的功能类似goto了。
个人猜测
一般都出现在循环里的。switch里这么写没什么意义吧。
这个跟switch无关,a: b: c: abc: def: d: e: f: abcdef:是语句的标签,定义了用来给带标签的break或continue语句控制程序流程用的。
任何一条语句之前都可以加标签形如 xxxx:
a: b: c: abc: def: d: e: f: abcdef:不过是个嵌套的标签而已。
那句case可以这么理解: case 0:
a: b: c: abc: def: d: e: f: abcdef: System.out.println(1);
break;如欲看更详细的带标签的break或continue语句的使用,可参看
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
会默认的将a,b,c......这些转换成ascii
表示 当num为0,97,98,99......的时候打印 1
否则打印 2
public static void main(String[] args)
{
int num = 1;
switch (num)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
System.out.println(1);
break;
default:
System.out.println(2);
break;
} }这样写就行。
num=0-6,输出1;
num=其他,输出2;
case 整数值1 : 语句; break;
case 整数值2 : 语句; break;
case 整数值3 : 语句; break;
case 整数值4 : 语句; break;
case 整数值5 : 语句; break;
//..
default:语句;
} 其中,“整数选择因子”是一个特殊的表达式,能产生整数值。switch能将整数选择因子的结果与每个整数值比较。若发现相符的,就执行对应的语句(简单或复合语句)。若没有发现相符的,就执行default语句。
在上面的定义中,大家会注意到每个case均以一个break结尾。这样可使执行流程跳转至switch主体的末尾。这是构建switch语句的一种传统方式,但break是可选的。若省略break,会继续执行后面的case语句的代码,直到遇到一个break为止。尽管通常不想出现这种情况,但对有经验的程序员来说,也许能够善加利用。注意最后的default语句没有break,因为执行流程已到了break的跳转目的地。当然,如果考虑到编程风格方面的原因,完全可以在default语句的末尾放置一个break,尽管它并没有任何实际的用处。
switch语句是实现多路选择的一种易行方式(比如从一系列执行路径中挑选一个)。但它要求使用一个选择因子,并且必须是int或char那样的整数值。例如,假若将一个字串或者浮点数作为选择因子使用,那么它们在switch语句里是不会工作的。对于非整数类型,则必须使用一系列if语句。
下面这个例子可随机生成字母,并判断它们是元音还是辅音字母: //: VowelsAndConsonants.java
// Demonstrates the switch statement public class VowelsAndConsonants {
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
char c = (char)(Math.random() * 26 + 'a');
System.out.print(c + ": ");
switch© {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
System.out.println("vowel");
break;
case 'y':
case 'w':
System.out.println(
"Sometimes a vowel");
break;