Java switch使用原理及实例解析

作者:西红柿里没有番茄 时间:2023-10-11 20:44:20 

这篇文章主要介绍了Java switch使用及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

java中有两个经常用于条件判断的方法,一个是if{}else{},另一个就是switch()了。总的来说因为switch可以直接一对一满足条件,不满足条件的情况是不会执行的的所以switch的效率会相对if{}else{}更高一些,而且这两个方法是可以无门槛互换的。

switch的使用:

  • 能用于switch判断的类型有:byte、short、int、char(JDK1.6),还有枚举类型,但是在JDK1.7后添加了对String类型的判断

  • case语句中少写了break,编译不会报错,但是会一直执行之后所有case条件下的语句而不再判断,直到default语句

  • 若果没有符合条件的case就执行default下的代码块,default并不是必须的,也可以不写


switch(mark) {
     case 0:
       System.out.println(mark);
 break;
     case 10:
       System.out.println(mark);
    break;
     case 20:
       System.out.println(mark);
       break;
     }

这里mark值是判断条件,case 对应的是具体的值,如果mark=0或者mark=10或者mark=20,相对应的条件成立就会执行case中的程序

在这里有一个思维误区很容易出错,看下面代码:


switch(mark) {
     case 0:
       System.out.println(mark);
       mark = 10;
       break;
     case 10:
       System.out.println(mark);
       mark = 20;
       break;
     case 20:
       System.out.println(mark);
       mark = 30;
       break;
     }

这段代码比和上面的代码相比,在每个case中会重新给mark赋值,让这个重新赋的值和下一步的case相对应。

错误思维:如果mark的初始值是0,这个switch程序会执行三次,执行的顺序依次是0,10,20。

因为我们在每一步的case中都重新给mark赋值了,所以不熟悉的很容易就会觉得这个switch会从上往下执行,凡是满足条件的步骤都会执行。其实这个switch是只会执行一次的,因为每个case后面都跟了一个break,这个break的作用就是跳出当前循环也就是跳出当前的switch,所以这个switch只会执行mark初始值对应的那个case,后面的步骤不会继续执行。如果要想三个步骤都依次执行需要在switch外面加上一个while循环,在一定的条件内重复执行switch:如下加上while


while(mark<=30) {
     switch(mark) {
     case 0:
       System.out.println(mark);
       mark = 10;
       break;
     case 10:
       System.out.println(mark);
       mark = 20;
       break;
     case 20:
       System.out.println(mark);
       mark = 30;
       break;
     }
   }

总结:每次进入switch,如果每个case后面都用break跳出当前循环了,则不管mark的值怎么变,只会执行一个case

来源:https://www.cnblogs.com/lyd447113735/p/8855195.html

标签:Java,switch,实例
0
投稿

猜你喜欢

  • springboot 文件上传大小配置的方法

    2023-08-02 11:49:16
  • Android中View跟随手指移动效果

    2021-07-26 00:21:18
  • java实现纸牌游戏之小猫钓鱼算法

    2021-08-11 22:57:00
  • 浅析Mybatis Plus和Mybatis的区别

    2022-12-05 18:14:18
  • 永久解决idea git log乱码的问题

    2022-01-10 06:13:13
  • 基于App自适应draw9patch不失真背景的方法详解

    2022-04-06 17:36:51
  • c#动态类型,及动态对象的创建,合并2个对象,map实例

    2023-04-28 17:40:12
  • C#根据日期计算星期几的实例代码

    2021-07-24 21:43:34
  • C#之Android手机App开发

    2023-10-19 05:18:04
  • Java 重写时应当遵守的 11 条规则

    2023-02-10 18:58:06
  • IDEA打包jar-解决找不到或无法加载主类 main的问题

    2021-12-28 10:30:42
  • Java多线程工具CompletableFuture的使用教程

    2023-07-30 20:31:45
  • Android实现页面跳转的全过程记录

    2023-08-16 21:06:08
  • Mybatis拦截器的实现介绍

    2023-07-04 04:23:31
  • Spring如何更简单的读取和存储对象

    2023-09-30 00:32:14
  • C#编译器对局部变量的优化指南

    2023-06-23 14:54:12
  • maven环境变量配置以及失败原因解析

    2023-09-15 22:43:28
  • Android SlidingDrawer 抽屉效果的实现

    2023-08-02 07:58:30
  • Android权限HaloPermission详细使用

    2021-08-18 07:14:46
  • 基于Spring p标签和c标签注入方式

    2023-11-25 22:26:36
  • asp之家 软件编程 m.aspxhome.com