[Java] Switch能否用string做参数?

简介:

1 . 在jdk 7 之前,switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型。switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会 自动 转换为int类型(精精度小的向大的转化),所以它们也支持。

  对于精度比int大的类型,long、float、double,不会自动转换成int。要想使用就得加强转如(int)long。

另外boolean类型不参与转换,任何类型不能转换为boolean型.

2 .我们也可以用枚举类型实现switch可传入string参数

public enum  En{
             a,b,c
         }
    public static void main(String[] args) {
          En t = En.a; 
          function(t);
       }
    public static void function(En type){
        switch (type) {
            case a:
                  System.err.println("a");
                break;
            case b:
                  System.err.println("b");
                break;
            case c:
                  System.err.println("c");
                break;
            default:
                break;
    }
    }

   
   

    运行结果:

    这里写图片描述

    3 . jdk7之后Java加入了switch对string的支持,就不用枚举来实现啦!

     public static void main(String[] args) {
              String s = "a";
              switch (s) {
                case "a":
                      System.err.println("a");
                    break;
                case "b":
                      System.err.println("b");
                    break;
                case "c":
                      System.err.println("c");
                    break;
                default:
                    break;
            }
           }
    
     
     


      运行结果:

      这里写图片描述












      相关文章
      |
      28天前
      |
      安全 Java
      Java中的Switch表达式:更简洁的多路分支
      Java中的Switch表达式:更简洁的多路分支
      373 211
      |
      1月前
      |
      Java 编译器
      Java 17 Switch表达式:更简洁、更强大的流程控制
      Java 17 Switch表达式:更简洁、更强大的流程控制
      |
      2月前
      |
      自然语言处理 Java Apache
      在Java中将String字符串转换为算术表达式并计算
      具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
      198 14
      |
      5月前
      |
      Java
      java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
      本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
      116 0
      |
      6月前
      |
      Java Linux 定位技术
      Minecraft配置文件参数说明(JAVA服务器篇)
      Minecraft JAVA版服务器启动后会生成server.properties配置文件,位于minecraft_server/根目录下。该文件包含多项关键设置,如游戏模式(gamemode)、最大玩家数(max-players)、难度(difficulty)等。此文档详细说明了各配置项的功能与默认值,帮助用户高效管理服务器环境。
      1519 60
      |
      6月前
      |
      缓存 安全 Java
      《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
      🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
      142 11
      |
      6月前
      |
      Java
      课时14:Java数据类型划分(初见String类)
      课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
      148 9
      |
      8月前
      |
      Java
      Java中的控制流语句:if、switch、for、foreach、while、do-while
      Java中的控制流语句包括条件判断语句 `if`和 `switch`,以及循环语句 `for`、增强型 `for`(`foreach`)、`while`和 `do-while`。这些语句提供了灵活的方式来控制程序的执行流程,确保代码逻辑清晰且易于维护。掌握这些基本语法,对于编写高效和可读的Java程序至关重要。
      295 15
      |
      6月前
      |
      存储 JSON Java
      《从头开始学java,一天一个知识点》之:方法定义与参数传递机制
      **你是否也经历过这些崩溃瞬间?** - 看了三天教程,连`i++`和`++i`的区别都说不清 - 面试时被追问"`a==b`和`equals()`的区别",大脑突然空白 - 写出的代码总是莫名报NPE,却不知道问题出在哪个运算符 🚀 这个系列就是为你打造的Java「速效救心丸」!我们承诺:每天1分钟,地铁通勤、午休间隙即可完成学习;直击痛点,只讲高频考点和实际开发中的「坑位」;拒绝臃肿,没有冗长概念堆砌,每篇都有可运行的代码标本。上篇:《输入与输出:Scanner与System类》 | 下篇剧透:《方法重载与可变参数》。
      131 25