关于switch传String类型比较的问题

在java1.7之前大家都清楚switch的比较范围只能局限于(int 、short 、byte 、char)之间,Java 虚拟机和字节代码这个层次上,只支持在 switch 语句中使用与整数类型兼容的类型。在1.7后switch实现字符串比较的功能。具体是如何做到的?实际上,Java虚拟机和字节码层次上只支持switch语句中使用与整数类型兼容的类型没有变,只是这个实现字符串比较的新特性是在编译器这个层次上实现的。实现的机制是:将字符串之间的比较转换为其哈希值的比较

所以能不用switch比较String类型的就不要用了

通常会用到switch比较String的地方有通过字符串获取枚举值的场景

这种的话,最好采用枚举类的.values()方法来获取枚举的每一个字符串值,然后在做比较,然后再返回,这样写的目的有两个好处,第一可以无限兼容后续增加枚举数量,第二可以避免写死一些值,而且if会很长,避免了后续修改枚举字符串值,导致多处要修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[2\]中的代码展示了如何在switch语句中使用String类型。在switch的表达式中,可以使用String类型的变量或者表达式。每个case后面的值可以是一个字符串常量,用双引号括起来。当表达式的值与某个case后面的字符串常量相等时,对应的语句会被执行。如果没有匹配的case,会执行可选标签default之下的语句。在每个case的语句块中,可以使用break语句来结束当前的case,防止执行其他case的语句。以下是一个示例: ``` String str = in.next(); switch(str){ case "abc": System.out.println("abc"); break; case "bcd": System.out.println("bcd"); break; default: System.out.println("default"); break; } ``` 在这个示例中,用户输入的字符串会被存储在变量str中。然后,根据str的值,程序会执行相应的语句块。如果str的值是"abc",则会输出"abc";如果str的值是"bcd",则会输出"bcd";如果str的值不是"abc"或"bcd",则会执行default标签下的语句,输出"default"。 #### 引用[.reference_title] - *1* *2* *3* [java中的switch里面表达式的类型可以是string类型](https://blog.csdn.net/qq_44949838/article/details/89432809)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值