int x=6, y=10, k=5;
switch( x%y ){
case 0: k=xy;
case 6: k=x/y;
case 12: k=x-y;
default: k=xy-x;
}
因为 6%10 等于 0
所以就会直接匹配到第一个case 0 因为没有break做结束
所以会从case 0 一直跑到default
所以最后 k = xy-x = 6*10-6=54
int x=6, y=10, k=5;
switch( x%y ){
case 0:
k=x*y;
System.out.println("k="+ k + " case : 0 结束");
case 6:
k=x/y;
System.out.println("k="+ k + " case : 6 结束");
case 12:
k=x-y;
System.out.println("k="+ k + " case : 12 结束");
default:
k=xy-x;
System.out.println("k="+ k + " default 结束");
}
以上打印的结果可以看出执行顺序,
k=0 case : 6 结束
k=-4 case : 12 结束
k=54 default 6 结束
为什么是这个执行顺序,可以看看 break 关键字的使用,每个 case 可以以 break 关键字做结束。
比如以下代码执行的顺序:
int x=6, y=10, k=5;
switch( x%y ){
case 0:
k=x*y;
System.out.println("k="+ k + " case : 0 结束");
break;
case 6:
k=x/y;
System.out.println("k="+ k + " case : 6 结束");
break;
case 12:
k=x-y;
System.out.println("k="+ k + " case : 12 结束");
break;
default:
k=xy-x;
System.out.println("k="+ k + " default 结束");
}
执行 结果为 :
k=0 case : 6 结束