>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 27202 个阅读者 刷新本主题
 * 贴子主题:  Java入门: switch case 语句 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-08 11:11:04     消息  查看  搜索  好友  邮件  复制  引用

  

Java switch case 语句

            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,判断是否继续输出,或是跳出判断。    

实例

Test.java 文件代码:

public   class   Test   {
    public   static   void   main ( String   args [ ] ) {
       // char grade = args[0].charAt(0);  
       char   grade  =  ' C ' ;

       switch ( grade )
       {
          case   ' A '  :
             System . out . println ( " 优秀 " ) ;
             break ;
          case   ' B '  :
          case   ' C '  :
             System . out . println ( " 良好 " ) ;
             break ;
          case   ' D '  :
             System . out . println ( " 及格 " ) ;
             break ;
          case   ' F '  :
             System . out . println ( " 你需要再努力努力 " ) ;
             break ;
          default  :
             System . out . println ( " 未知等级 " ) ;
       }
       System . out . println ( " 你的等级是  "  +  grade ) ;
    }
}

                    以上代码编译运行结果如下:

             良好

你的等级是 C

                                     如果 case 语句块中没有 break 语句时,JVM 并不会顺序输出每一个 case 对应的返回值,而是继续匹配,匹配不成功则返回默认 case。            

Test.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 " ) ;
       }
    }
}

                    以上代码编译运行结果如下:

             default

                     如果 case 语句块中没有 break 语句时,匹配成功后,从当前 case 开始,后续所有 case 的值都会输出。            

Test.java 文件代码:

public   class   Test   {
    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 " ) ;
       }
    }
}

                    以上代码编译运行结果如下:
1

2

default

                     如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。                            

Test.java 文件代码:

public   class   Test   {
    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 " ) ;
          case   3 :
             System . out . println ( " 3 " ) ;  break ;
          default :
             System . out . println ( " default " ) ;
       }
    }
}

                    以上代码编译运行结果如下:

1

2

3





[这个贴子最后由 flybird 在 2020-01-08 13:39:29 重新编辑]
  Java面向对象编程-->第一个Java程序
  JavaWeb开发-->Servlet技术详解(Ⅱ)
  JSP与Hibernate开发-->立即检索和延迟检索策略
  Java网络编程-->非阻塞通信
  精通Spring-->绑定CSS样式
  Vue3开发-->Vue组件开发高级技术
  为网站代码块pre标签增加一个复制代码按钮代码
  解密Java类文件的数据结构
  java实现动态编译并动态加载
  ThreadLocal的内存泄露的原因分析以及如何避免
  观察者模式和发布订阅模式的区别
  java 中文繁简体转换工具 opencc4j
  内部类的编程练习题
  内部类的种类和用法
  Java注解的定义和使用
  Java设计模式:抽象工厂模式
  使用javaNIO实现C/S模式的通信
  Eclipse使用指南:常用视图(View) 的用法
  正则表达式基础入门
  Java设计模式:备忘录模式
  Java入门实用代码:将文件内容复制到另一个文件
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。