首页 > 编程语言 >Java switch case语句

Java switch case语句

时间:2022-12-12 11:23:57浏览次数:65  
标签:case 语句 Java default break switch println

最近在项目中有根据传入不同的type来进行处理不同业务的需求,所以用到了switch case,而自己又没有深刻的总结过这方面的代码,导致代码穿透了,还好自测发现了,不然搞个乌龙。

那么这个用法应该怎么用呢? 我们先来了解这个关键字的用法是什么:在菜鸟教程中定义时这样的:switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

语法规则如下:

switch(expression){
    case value :
       //语句
       break; //可选
    case value :
       //语句
       break; //可选
    //你可以有任意数量的case语句
    default : //可选
       //语句
}

switch case 语句有如下规则:

  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

  • case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量。

  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句。

  • 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句。

  • switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支(可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。default 分支不需要 break 语句。

switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断。

如下例子:

public static void main(String args[]){
      int i = 5;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }

该例子传入一个表达式i,i定义为一个数字,那么case的时候就只能是数字,这里因为没有break;关键字,所以会穿透,依次往下执行,又因为没有匹配到5,最后的输出结果就是default。

如下例子:

public static void main(String args[]){
      int i = 1;
      switch(i){
         case 0:
            System.out.println("0");
         case 1:
            System.out.println("1");
         case 2:
            System.out.println("2");
         default:
            System.out.println("default");
      }
   }

该例子传入一个i,i=1,匹配到1了,从1开始执行业务代码,那么又因为没有break关键字,所以也会穿透,最后的输出结果就是1,2,default。

在真实的项目中使用这种switch case特别需要注意加上break关键字,不加可能就会出大问题了。

标签:case,语句,Java,default,break,switch,println
From: https://www.cnblogs.com/hg-blogs/p/16975548.html

相关文章

  • 【java】(一)SpringBoot 源码解析——SpringApplication 初始化
    1.前言深入学习springboot笔记系列,可能会有错误还请指正,互相勉励,互相学习。SpringBoot项目启动只需启动主类的main函数即可启动java服务,相比于以往的部署java服务简......
  • java 实现Excel导入导出功能
    本文记录首先需要准备一个导入模板的实体类importcn.iocoder.yudao.framework.excel.core.annotations.DictFormat;importcn.iocoder.yudao.framework.excel.core.co......
  • java可以开发电脑桌面应用吗?java开发用什么软件?
    java开发PC桌面程序 Java是一门面向对象编程语言,作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程,那java可以开发电......
  • JAVA8 lambda之groupby三种用法
    一,有一个参数的groupby第一个参数:按照该参数规则进行分组。结果返回一个Map集合,Map的key是按照该规则执行后返回的每个结果,Map的value是一个List集合,该集合中的值是能满足......
  • 0停机迁移Nacos?Java字节码技术来帮忙
    摘要:本文介绍如何将SpringCloud应用从开源Consul无缝迁移至华为云Nacos。本文分享自华为云社区《0停机迁移Nacos?Java字节码技术来帮忙》,作者:华为云PaaS服务小智。1.市场......
  • Kotlin 和 Java 泛型的局限性、泛型擦除、星投影
    Hi大家好,我是DHL。公众号:ByteCode,专注分享有趣硬核原创内容,Kotlin、Jetpack、性能优化、系统源码、算法及数据结构、动画、大厂面经全文分为视频版和文字版,文字版:文......
  • Java性能调优System的gc垃圾回收方法
    java性能调优System的gc垃圾回收方法java性能调优System的gc垃圾回收方法示例解一、什么是System.gc()?​​System.gc()​​是用Java,C#和许多其他流行的高级编程语言提供的API......
  • JavaScript中的eval()
    evalJavaScript中的eval()函数可以接受一个字符串作为参数,并将其中的内容视为好像在书写时就存在于程序中的这个位置的代码。换句话说,可以在你写的代码中用程序生成代码并......
  • java方法的笔记
    方法方法的概念方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集注意:方法必须先创建才可以使用,该过程成为方法定义方法创建后并不是......
  • Java面向对象基础
    面向对象基础一、什么是面向对象把大象放进冰箱分为三步1、打开冰箱2、把大象放进冰箱3、关上冰箱假设我想把大象放进冰箱,使用面向过程的思想,我首先需要先思考如何......