switch(A){case a: break;........default :}用法

来源:互联网 发布:算法统宗 编辑:程序博客网 时间:2024/04/30 20:19

平时在使用switch…case语句的时候,只是会用,没有注意到它的一些细节,怪我大学时C没有学好吧,哈哈,有以下几点需要注意:
第一.switch…case语句中,一般情况下都只是使用到switch…case,很少用到default:,在没有default时,如下:

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (view.getId()){                    case 0:                        Log.e("蛋蛋","--------0");                    case 1:                        Log.e("蛋蛋","-------1");                    case 2:                        Log.e("蛋蛋","-------2");                }            }        });

先把switch括号中的view.getId()作为判断条件,要是view.getId()拿到的值为0,则执行case 0:语句,将Log.e(“蛋蛋”,”——–0”);打印出来,由于没有添加break;所以会将后续的两个Log全部执行掉,要是view.getId()拿到的值为1,则会从case 1:开始执行,结果是将1,2给打印出来,而0被跳过了
第二.要是添加了break,则结果会不同,如下:

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (view.getId()){                    case 0:                        Log.e("蛋蛋","--------0");                        break;                    case 1:                        Log.e("蛋蛋","-------1");                        break;                    case 2:                        Log.e("蛋蛋","-------2");                        break;                }            }        });

要是有break,那view.getId()等于0的时候,只打印0,不会执行1和2咯
第三.要是添加上default:语句,但是没有break,如下

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (0){                    case 0:                        Log.e("蛋蛋","--------0");                    case 1:                        Log.e("蛋蛋","-------1");                    case 2:                        Log.e("蛋蛋","-------2");                    default:                        Log.e("蛋蛋","-------3");                }            }        });

要是条件给出的是0,它会将0,1,2,3全部执行过去,结果如下
10-19 14:09:11.493 13598-13598/com.myself.zhw.text E/蛋蛋: ——–0
10-19 14:09:11.513 13598-13598/com.myself.zhw.text E/蛋蛋: ——-1
10-19 14:09:11.513 13598-13598/com.myself.zhw.text E/蛋蛋: ——-2
10-19 14:09:11.513 13598-13598/com.myself.zhw.text E/蛋蛋: ——-3
那要是添加了break呢?
代码如下:

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (0){                    case 0:                        Log.e("蛋蛋","--------0");                        break;                    case 1:                        Log.e("蛋蛋","-------1");                        break;                    case 2:                        Log.e("蛋蛋","-------2");                        break;                    default:                        Log.e("蛋蛋","-------3");                }            }        });

执行结果如下:
10-19 14:33:55.153 27257-27257/com.myself.zhw.text E/蛋蛋: ——–0
说明当存在default时,当没有case成立的时候就执行default,要是有成立的话,就执行那个case,不再执行default
第四,要是不存在break,而且default不放在最后呢?

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (1){                    default:                        Log.e("蛋蛋","-------3");                    case 0:                        Log.e("蛋蛋","--------0");                    case 1:                        Log.e("蛋蛋","-------1");                    case 2:                        Log.e("蛋蛋","-------2");                }            }        });

执行的结果如下:
10-19 14:41:14.003 9674-9674/com.myself.zhw.text E/蛋蛋: ——-1
10-19 14:41:14.013 9674-9674/com.myself.zhw.text E/蛋蛋: ——-2
要是条件值为5呢?
执行结果如下:
10-19 14:42:17.873 12456-12456/com.myself.zhw.text E/蛋蛋: ——-3
10-19 14:42:17.873 12456-12456/com.myself.zhw.text E/蛋蛋: ——–0
10-19 14:42:17.873 12456-12456/com.myself.zhw.text E/蛋蛋: ——-1
10-19 14:42:17.873 12456-12456/com.myself.zhw.text E/蛋蛋: ——-2
要是存在break呢?

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (5){                    default:                        Log.e("蛋蛋","-------3");                    case 0:                        Log.e("蛋蛋","--------0");                        break;                    case 1:                        Log.e("蛋蛋","-------1");                        break;                    case 2:                        Log.e("蛋蛋","-------2");                        break;                }            }        });

执行结果如下:
0-19 14:45:05.723 15165-15165/com.myself.zhw.text E/蛋蛋: ——-3
10-19 14:45:05.723 15165-15165/com.myself.zhw.text E/蛋蛋: ——–0
要是把default放最后呢?

start= (Button) findViewById(R.id.start);start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                switch (5){                    case 0:                        Log.e("蛋蛋","--------0");                        break;                    case 1:                        Log.e("蛋蛋","-------1");                        break;                    case 2:                        Log.e("蛋蛋","-------2");                        break;                    default:                        Log.e("蛋蛋","-------3");                }            }        });

结果如下:
10-19 14:47:39.013 22338-22338/com.myself.zhw.text E/蛋蛋: ——-3
好了,现在具体的功能自己体会吧,不用总结了。

原创粉丝点击