`
yangsirjiayou
  • 浏览: 35530 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java中switch表达式不能用字符串的问题

    博客分类:
  • java
阅读更多
java中规定switch(表达式),其中的表达式只能使用Java八种原始类型(char,byte,short,int,long,double,float),而String是一个对象.
之后查看了能不能有什么方法可以实现,发现了一位大神的解决方法,虽然方法有点麻烦,但是还是值得参考的。方法如下:
第一个关键,使用String的hasCode取得字符串的哈希码,哈希码的算法如下:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

因而两个不同字符串,其哈希码几乎不同(可能会相同,需要深究的话自己研究吧,呵呵 ),hasCode返回一个int型值,OK,我们就用这个来做case后的常量值。
第二个关键,这个hasCode不能直接拿来用,只能事先手动取得字符串的哈希码,申明一个final型的int变量,拿这个来case。
这样一来,你的switch后面的表达式就可以用XXX.hasCode,case里面用上事先定义好的常量值了。

感谢CSDN会员:flingfish235提供的方法!
分享到:
评论

相关推荐

    switch不能字符串比较解决方法

    自Java 7起,Java支持在`switch`语句中使用字符串作为表达式。这使得开发人员可以直接用字符串进行比较,而无需映射它们到整数值。下面是如何使用这种方式改进原始代码: ```java public void switchCaseStr() { ...

    java正则表达式过滤html标签

    该方法使用switch语句来判断输入字符串中的每个字符,如果是特殊字符,则将其转换为对应的html实体符号。 hasSpecialChars方法用于判断输入字符串中是否包含特殊字符、>、"、&等。如果输入字符串中包含这些特殊...

    JAVA字符串类型switch的底层原理详析

    JAVA字符串类型switch的底层原理详析是指在JAVA语言中,switch语句是如何处理字符串类型的表达式的。从表面上看,switch语句似乎可以直接处理字符串类型的表达式,但是实际上,JAVA虚拟机(JVM)是如何实现的呢? ...

    在java switch中使用String作为分支条件

    本文将详细介绍如何在Java中利用`switch`语句与字符串进行条件判断,并提供一种在Java早期版本中通过自定义枚举(`enum`)实现该功能的方法。 #### 使用String作为Switch条件的方法 ### Java 7及以后版本 在Java ...

    Java语法基础+一些 JAVA案例,和正则表达式

    字符串在Java中被视为特殊的对象,使用String类来表示。字符串是不可变的,提供了丰富的操作方法,如拼接、查找、替换等。 总的来说,Java语法基础是学习Java编程的基础知识,掌握这些概念和规则对于编写高效、可靠...

    Java正则表达式过滤html标签1[参考].pdf

    该方法使用switch语句来判断输入字符串中的每个字符,并返回判断结果。 本文介绍了如何使用Java正则表达式来过滤HTML标签,包括过滤所有以“<”开头以“>”结尾的标签、提取IMG标签的SRC属性等。这些技术可以在实际...

    switch语句在java和c#中的区别

    C# 5.0 及以后的版本允许使用枚举类型、字符串以及值类型的 `switch` 表达式,而 Java 之前只支持整型、字符型和枚举类型,但自从 Java 7 引入了 `String` 类型的 `switch`,这一限制得到了放宽。 另一个不同点是,...

    java 用户输入加减乘除表达式运算

    这可能涉及到使用正则表达式检查输入的有效性,然后使用`split()`函数分解字符串,将数字和运算符分开。例如,我们可以用空格作为分隔符。 ```java String[] tokens = input.split(" "); ``` 3. **算术运算**:在...

    JAVA字符串及习题[归类].pdf

    Java字符串在编程中扮演着重要角色,它们是不可变的对象,这意味着一旦创建,就不能更改其内容。本资料主要涵盖了字符串的比较、转化以及操作运算符的相关知识点。 1. 字符串的比较: Java中提供了两种主要的字符...

    java中switch的使用及语法说明

    - **字符串支持**:从Java 7开始,`switch` 语句支持字符串作为表达式的值。这使得处理字符串更加灵活。 - **多条件匹配**:从Java 7开始,可以在同一个 `case` 语句中使用逗号分隔多个值,例如 `case 1, 2, 3: ......

    java实现表达式计算源代码

    在Java编程语言中,实现一个能够计算算术表达式的程序是一项常见的任务,这对于理解编程基础、数据类型、操作符优先级以及控制流程等概念至关重要。本文将深入探讨如何使用Java来设计并实现一个简单的算术表达式...

    Java中switch实例.pdf

    - 从Java 14开始,引入了`yield`关键字,使得`switch`表达式成为可能,这使得`switch`可以在表达式中使用,而不仅仅局限于语句。 总结来说,`switch`语句是Java中处理多分支逻辑的重要工具,尤其在处理枚举类型和...

    表达式计算Java课设报告

    【Java 表达式计算程序】的课设报告主要涵盖了设计和实现一个能解析和计算数学表达式的Java程序。这个程序允许用户输入包含四则运算、括号以及常见数学函数(如三角函数、平方根、指数和对数)的表达式,并直接给出...

    Java中String类(字符串操作)的10个常见问题和解决方法

    标题为"Java中String类(字符串操作)的10个常见问题和解决方法"的文档主要探讨了Java语言中字符串处理的核心类String的使用细节和最佳实践。以下是根据文档内容总结的知识点: 1. 字符串比较 在Java中,比较字符串...

    使用java处理字符串公式运算的方法

    在Java编程中,处理字符串公式运算是一项常见的任务,特别是在需要动态计算或自定义逻辑的场景。本篇文章将探讨如何在Java中实现这个功能,主要利用后缀表达式(也称为逆波兰表示法)来解决这个问题。 首先,我们...

    Java中switch判断语句典型使用实例

    `switch`语句适用于执行基于变量不同值的不同操作,这里的变量通常是整型、字符型(char)、枚举类型(enum)或从Java 7开始的字符串(String)。 在给定的实例中,`switch`语句被用来判断用户输入的月份,并根据...

    十大常见Java String问题_动力节点Java学院整理

    String类的split()方法使用正则表达式来分割字符串。为了匹配空白字符,可以使用"\s+",但由于Java的字面量转义,实际传入的参数应该是"\\s+"。 6. **substring()方法的工作原理** 在JDK 6中,substring()方法...

    JAVA循环数组字符串PPT教案学习.pptx

    8. **字符串处理**:Java中的字符串是不可变对象,常用的方法包括获取长度、比较、拼接、查找子串等。字符串与基本数据类型之间可以相互转换,如使用`Integer.parseInt()`和`String.valueOf()`。 9. **引用数据类型...

    十个最常见的Java字符串问题(翻译)

    自JDK7起,Java支持在switch语句中使用字符串。开发者可以将字符串作为条件,进行多个分支的逻辑处理。这提高了代码的可读性和易用性。 4. 字符串转换为整数 在Java中,字符串可以使用 "Integer.parseInt()" 方法...

Global site tag (gtag.js) - Google Analytics