Java基础学习篇:switch条件语句进阶(最详细版)

🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝🔝

🥇博主昵称:小菜元

🍟博客主页小菜元

🥗感谢点赞👍评论🃌

⚇很方便的在线编辑器: Lightly

让我们一起在写作中记录学习吧!

目录

switch使用目的

switch语句的形式

switch语句的注意要点(重点)


switch使用目的

在我们需要通过选择来输出指定内容时(例如:输入1就输出星期一,输入3就输出星期三)这个时候很多初学者都会选择if...else语句来实现,但是这样会导致编写过程冗杂,使得程序执行复杂,为避免这种问题出现,我们可以选择switch条件语句来实现这个内容

switch语句的形式

java 复制代码
public class Test{
    public static void main(String[] args){
        switch(a){
            case b:        //判断b与a是否相等
                            //输出语句执行输出内容
            case c:
                break;    //结束执行
            default:        //加上结束语句
        }
    }
}
            
           
   

以上就是switch的形式,在switch语句中,a的表达式的类型必须是与int类型兼容的基本形式,就是能自动转化为int类型,因此他的合法类型包括:byte、short、char、int类型 (从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量)【每个case后的变量不能相同(称呼:为了便于表述,将switch后的变量成为switch表达式,case后的变量表达式,即a为switch的表达式】

PS:当然变量也可以是枚举类型

switch语句的注意要点(重点)

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

  2. 当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。case 语句不必须要包含 break 语句。如果没有 break 语句出现,程序会继续执行下一条 case 语句,直到出现 break 语句(也就是执行了break后直接结束语句)

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

    java 复制代码
    public class Test {
       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");
          }
       }
    }
    java 复制代码
    public class Test {
       public static void main(String args[]){
          int i = 5;
          switch(i){
             case 0:
                System.out.println("0");
             case 1:
                System.out.println("1");
            default:
                System.out.println("default");
          
             case 2:
                System.out.println("2");
             }
       }
    }

    上述两段代码表示含义相同!

  4. 如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回default内容(3表述结果可表达次内容)

  5. 如果switch表达式与某个case表达式匹配或者是与default匹配时就从这个case表达式或者是default开始执行,遇到break即结束,否则就继续执行case后的句子,不检查case表达式的值(case表达式的定义在上方已阐述)

    java 复制代码
    public class Test {
        public static void main(String[] args){
            int x = 4;
            switch(x){
                default:System.out.println("直接输出");
                case 1:System.out.println("测试1");
                case 2:System.out.println("222");break;
                case 3:System.out.println("我是3");
    
            }
        }
    
    }
  6. PS:那就有朋友会问了,如果我后面的case表达式有了对应的值那么我执行顺序是什么呢?答案其实很简单,就是有对应先执行对应

  7. 一般情况下,每个case语句都应该对应一个break以便推出switch语句,但是如果多个表达式对应相同的流程分支就可不必使用

    java 复制代码
    public class Test {
        public static void main(String[] args){
            int x = 2;
            switch(x){
                case 1:System.out.println("测试1");
                case 2:
                case 3:
                case 4:System.out.println(11);  //即case值为234都执行次代码
    
            }
        }
    
    }

    使用整数或者String操作数的switch表达式必须要有default,因为无论操作数值是什么,表达式都要生成一个值

  8. PS:每个case语句一定要加break来终止执行,否则它将会继续执行知道default结束,导致出现大问题!

  9. ++今天的java学习就到此结束了!希望大家能够掌握switch条件语句!++

复制代码
![](https://i-blog.csdnimg.cn/blog_migrate/64bc4bc78178f8c507364d8b2721472f.gif)
相关推荐
xieliyu.5 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
明夜之约5 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee5 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Jinkxs5 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
辣机小司5 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
数智工坊6 小时前
机器人运动控制:采样、优化与学习三大流派深度对比与实战
android·学习·机器人
ZC跨境爬虫6 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
fangdengfu1236 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
云烟成雨TD7 小时前
Spring AI 1.x 系列【51】可观测性技术选型
java·人工智能·spring
星越华夏7 小时前
ESP32-CAM图像传输项目说明文档
java·后端·struts·esp32