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

平时在使用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
好了,现在具体的功能自己体会吧,不用总结了。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值