当前位置:   article > 正文

Java分支语句if else和switch的使用_java of…else语句和switch语句

java of…else语句和switch语句

Java的流程控制语句中的分支语句有单分支 if ,双分支 if ... else ,多分支 if ... else if .. else,除此之外还有switch语句,其中多分支的情况既可以用if ... else if ...else 还可以用switch来写,基本都能得到想要的结果。

if 与 if else

在有两个分支的情况下时,常常可以用if和if else(多分支时也可以用单if),但if和if else在两分支情况下是有区别的:单if写两次意味着两次都会进入if的条件判断语句去进行判断 ,而if else若进入if条件判断时满足执行,那么不会再进入else条件判断中。单if代码举例:

  1. int num = 50;
  2. if(num > 40) {
  3. System.out.println("num大于40");
  4. }
  5. if(num < 60) {
  6. System.out.println("num小于60");
  7. }

该代码的运行结果如下:

if else if else代码举例:

  1. int num = 50;
  2. if(num > 40) {
  3. System.out.println("num大于40"); //执行完这句就结束,不会进入else
  4. } else if(num < 60) {
  5. System.out.println("测试代码1");
  6. } else {
  7.     System.out.println("测试代码2");
  8. }

运行结果如下,在判断满足任何一个条件以后就会终止接下来的判断,所以只会输出一句:

多分支情况下的if... else if... else同理,都是只会进入其中一条语句执行且终止后续判断,相比只用单if语句来得效率更高,单if语句更常用于拦截或者穷举情况。

switch语句

switch语句也可以用来实现类似的条件分支效果,switch的语法格式如下:

  1.     switch (表达式) {
  2.     case 常量1:
  3.     语句;
  4.     break;
  5.     case 常量2:
  6.     语句;
  7.     break;
  8.     ......
  9.     default:
  10.     break;
  11.     }

switch语句中可以匹配的表达式的类型有

  • byte、short、char、int这四种类型;

  • 枚举类型;

  • String 类型;(1.7以后开始支持)

switch语句的规则很简单,即拿switch后的表达式的值和case后的值做判断,满足哪个就进入哪个case去执行语句。不过需要注意的是,case之后的值必须和switch变量的类型一致。

此外,switch语句一般都会在最后加上default进行结束,表示如果没有case的值可以匹配上那么最后会执行这条语句。

switch语句只有在匹配上相应的case的值才会进入该case执行语句,若该case在语句最后有break;那么执行完该语句会退出switch,如果该case没有break;那么会直接匹配接下来的case并执行语句(无论是否匹配),直到遇到break;或者default。(case穿透现象)

有break的代码和运行结果举例:

  1. Scanner sc = new Scanner(System.in);
  2. System.out.println("请输入天:");
  3. int day = sc.nextInt();
  4. switch(day) {
  5. case 1:
  6. System.out.println("星期一");//有break的情况下
  7. break;
  8. case 2:
  9. System.out.println("星期二");
  10. break;
  11. case 3:
  12. System.out.println("星期三");
  13. break;
  14. }

而在没有break的情况下,会出现case穿透现象,代码和运行结果如下:

  1. Scanner sc = new Scanner(System.in);
  2. System.out.println("请输入天:");
  3. int day = sc.nextInt();
  4. switch(day) {
  5. case 1:
  6. System.out.println("星期一");
  7.                                 //没有break
  8. case 2:
  9. System.out.println("星期二");
  10.                                 //没有break
  11. case 3:
  12. System.out.println("星期三");
  13. break;
  14. }

使用差异和运行效率

对于多分支情况来说,使用if else if 和 switch通常都可以,但是由于switch的变量类型限制,使用场景相对于if else if来说肯定局限很多,比如switch就无法匹配逻辑判断表达式如 if(a > b && a > c),只能匹配常量。

如果条件分支比较多的情况下,使用switch语句效率会更高,因为switch case语句会生成一个跳转表来指向case分支的地址,而这个表的索引号与switch变量的值是相等的。因此不需要像if else一样一个个遍历去判断,而是直接访问对应索引号,所以效率自然会更高。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/142273
推荐阅读
相关标签
  

闽ICP备14008679号