日常小记
switch/case大家都经常用,可能东西比较简单,以前从没有留意过,或者课本知识读的少忘得快,对switch/case执行流程了解不够深入,今天专门测试了下,得出如下结论:
/* 1.switch/case执行流程是:
* a.遇到匹配的case,并且该case有break则流程执行完毕;
* b.遇到匹配的case,如果该case没有break则流程继续执行,直到遇到break或者流程的结束;
* c.如果没有匹配的case,则执行default;没有default就什么也不做。
* 2.如果没有匹配的case,肯定会执行default;
* 如果有匹配的case,这时我们把default当成一个case来对待。
*
*/
看看测试的代码:
package zzone.example;
public class SwitchCase {
public static void Normal(){
int i = 10;
switch (i) {
case 10:
System.out.println(10);
break;
case 20:
System.out.println(20);
break;
default:
System.out.println("default");
break;
}
System.out.println("----->10");
}
public static void Special(){
int i = 10;
switch (i) {
default:
System.out.println("default");
//break;
case 10:
System.out.println(10);
case 20:
System.out.println(20);
break;
}
System.out.println("----->10 20");
}
public static void Special1(){
int i = 10;
switch (i) {
default:
System.out.println("default");
//break;
case 10:
System.out.println(10);
case 20:
System.out.println(20);
//break;
}
System.out.println("----->10 20");
}
public static void Special2(){
int i = 10;
switch (i) {
case 10:
System.out.println(10);
case 20:
System.out.println(20);
default:
System.out.println("default");
//break;
}
System.out.println("----->10 20 default");
}
public static void Special3(){
int i = 10;
switch (i) {
case 10:
System.out.println(10);
case 20:
System.out.println(20);
break;
default:
System.out.println("default");
//break;
}
System.out.println("----->10 20(因为有break,没执行default)");
}
public static void Special4(){
int i = 10;
switch (i) {
case 10:
System.out.println(10);
default:
System.out.println("default");
//break;
case 20:
System.out.println(20);
break;
}
System.out.println("----->10 default 20(default当成case看待)");
}
public static void Special5(){
int i = 10;
switch (i) {
case 0:
System.out.println(0);
case 10:
System.out.println(10);
case 20:
System.out.println(20);
default:
System.out.println("default");
//break;
}
System.out.println("----->10 20 default");
}
public static void Special6(){
int i = 1;
switch (i) {
case 0:
System.out.println(0);
case 10:
System.out.println(10);
case 20:
System.out.println(20);
default:
System.out.println("default");
}
System.out.println("----->default");
}
public static void Special7(){
int i = 100;
switch (i) {
case 0:
System.out.println(0);
case 10:
System.out.println(10);
break;
case 20:
System.out.println(20);
default:
System.out.println("default");
}
System.out.println("----->default");
}
public static void Special8(){
int i = 100;
switch (i) {
case 0:
System.out.println(0);
case 10:
System.out.println(10);
case 20:
System.out.println(20);
}
System.out.println("----->空");
}
public static void main(String[] args) {
/* 1.switch/case执行流程是:
* a.遇到匹配的case,并且该case有break则流程执行完毕;
* b.遇到匹配的case,如果该case没有break则流程继续执行(排除default的),直到遇到break或者流程的结束;
* c.如果没有匹配的case,则执行default;没有default就什么也不做。
* 2.如果没有匹配的case,肯定会执行default;
* 如果有匹配的case,这时我们把default当成一个case来对待。
*
*/
System.out.println("-------Normal-----------");
Normal();
System.out.println("-------0-----------");
Special();
System.out.println("-------1-----------");
Special1();
System.out.println("-------2-----------");
Special2();
System.out.println("-------3-----------");
Special3();
System.out.println("-------4-----------");
Special4();
System.out.println("-------5-----------");
Special5();
System.out.println("-------6-----------");
Special6();
System.out.println("-------7-----------");
Special7();
System.out.println("-------8-----------");
Special8();
}
}
运行结果:
-------Normal-----------
10
----->10
-------0-----------
10
20
----->10 20
-------1-----------
10
20
----->10 20
-------2-----------
10
20
default
----->10 20 default
-------3-----------
10
20
----->10 20(因为有break,没执行default)
-------4-----------
10
default
20
----->10 default 20(default当成case看待)
-------5-----------
10
20
default
----->10 20 default
-------6-----------
default
----->default
-------7-----------
default
----->default
-------8-----------
----->空
*********************************************************************************************************************
宁愿做错了而后悔,也不要错过了而后悔!