[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;
            }
           }
    
     
     


      运行结果:

      这里写图片描述












      相关文章
      |
      10月前
      |
      安全 Java
      Java中的Switch表达式:更简洁的多路分支
      Java中的Switch表达式:更简洁的多路分支
      751 211
      |
      10月前
      |
      Java 编译器
      Java 17 Switch表达式:更简洁、更强大的流程控制
      Java 17 Switch表达式:更简洁、更强大的流程控制
      1199 111
      |
      8月前
      |
      编解码 Java 开发者
      Java String类的关键方法总结
      以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
      483 5
      |
      10月前
      |
      存储 SQL 缓存
      Java字符串处理:String、StringBuilder与StringBuffer
      本文深入解析Java中String、StringBuilder和StringBuffer的核心区别与使用场景。涵盖字符串不可变性、常量池、intern方法、可变字符串构建器的扩容机制及线程安全实现。通过性能测试对比三者差异,并提供最佳实践与高频面试问题解析,助你掌握Java字符串处理精髓。
      |
      11月前
      |
      自然语言处理 Java Apache
      在Java中将String字符串转换为算术表达式并计算
      具体的实现逻辑需要填写在 `Tokenizer`和 `ExpressionParser`类中,这里只提供了大概的框架。在实际实现时 `Tokenizer`应该提供分词逻辑,把输入的字符串转换成Token序列。而 `ExpressionParser`应当通过递归下降的方式依次解析
      506 14
      |
      Java Linux 定位技术
      Minecraft配置文件参数说明(JAVA服务器篇)
      Minecraft JAVA版服务器启动后会生成server.properties配置文件,位于minecraft_server/根目录下。该文件包含多项关键设置,如游戏模式(gamemode)、最大玩家数(max-players)、难度(difficulty)等。此文档详细说明了各配置项的功能与默认值,帮助用户高效管理服务器环境。
      4251 62
      |
      缓存 安全 Java
      《从头开始学java,一天一个知识点》之:字符串处理:String类的核心API
      🌱 **《字符串处理:String类的核心API》一分钟速通!** 本文快速介绍Java中String类的3个高频API:`substring`、`indexOf`和`split`,并通过代码示例展示其用法。重点提示:`substring`的结束索引不包含该位置,`split`支持正则表达式。进一步探讨了String不可变性的高效设计原理及企业级编码规范,如避免使用`new String()`、拼接时使用`StringBuilder`等。最后通过互动解密游戏帮助读者巩固知识。 (上一篇:《多维数组与常见操作》 | 下一篇预告:《输入与输出:Scanner与System类》)
      404 11
      java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
      本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
      767 0
      |
      存储 编译器 C语言
      关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论
      你真的了解string的'\0'么?你知道创建一个string a("abcddddddddddddddddddddddddd", 16);这样的string对象要创建多少个对象么?你知道string与vector进行扩容时进行了怎么的操作么?你知道怎么求Vector 最大 最小值 索引 位置么?
      296 0