A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王训印 中级黑马   /  2015-8-5 18:53  /  475 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class Test7
  2. {
  3.      public static void main(String[] args)
  4.      {
  5.         int i=5;
  6.         switch(i)
  7.         {
  8.               case 1:
  9.                System.out.println("one");
  10.               case 10:
  11.                System.out.println("ten");
  12.               case 5:
  13.                System.out.println("five");   
  14.               case 3:
  15.                System.out.println("three");
  16.               default:
  17.                System.out.println("other");
  18.         }
  19.     }
  20. }
  21. 复制代码
  22. è 结果是:

  23. five
  24. three
  25. other
复制代码
  1. switch(表达式)

  2. switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break。
  3. 如上所给的代码中,由于i等于5,和前面的两个case都不匹配,所以结果中并没有one和ten的。而第三个case中的5就和switch中i的值匹配,因此就会打印出five的,由于没有遇到break所以就会顺序执行很面的代码,打印出three和other

  4. 对于流程控制中的switch-case语句,一直是我的一个弱项.

  5. 每当考试或者面试笔试的时候,总是丈二和尚摸不着头脑,我想这应该是我基础太差的原因吧!

  6. 为了彻底解决这个心病,不得不花点功夫了!

  7. 首先从原理上来阐述这个问题:

  8. [code]switch(表达式)
  9. { case 常量表达式1:语句1;

  10. ....

  11. case 常量表达式2:语句2;

  12. default:语句;
  13. }
复制代码


case 常量表达式1:语句1;

....

case 常量表达式2:语句2;

default:语句;

}[/code]

1.default就是如果没有符合的case就执行它,default并不是必须的.

2.case后的语句可以不用大括号. case 后面必须是常量表达式constant expressions, 错误表示如: case x .

3.switch语句的判断条件可以接受int,byte,char,short, enum不能接受其他类型.

4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.

原理归原理,下面是几个容易混淆的例子.

1.标准型(case后面都有break语句)
  1. int i=3;
  2. switch(i)
  3. {
  4.     case 1:
  5.     System.out.println(1);
  6.     break;

  7.     case 2:
  8.     System.out.println(2);
  9.     break;

  10.     case 3:
  11.     System.out.println(3);
  12.     break;

  13.     default:
  14.     System.out.println("default");
  15.     break;
  16. }
  17. 复制代码

  18. 输出结果:
  19. 3
复制代码

4 个回复

倒序浏览
Switch(表达式) 表达式支持的类型
回复 使用道具 举报
如果把default:放在第四行呢
回复 使用道具 举报
黑进制 发表于 2015-8-5 21:52
如果把default:放在第四行呢

能说明白点吗,不是很懂你要说的,不好意思
回复 使用道具 举报
class Demo{
    public static void main(String [] args){
        int i=4;
        switch(i){
            case 1:
                System.out.print(1);
            case 2:
                System.out.println(2);
            case 4:
                System.out.println(4);
            default:
                System.out.println("haha");
            case 5:
                System.out.println(5);
        }
    }
}

结果是:
4
haha
5
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马