从Java 7 开始,我们可以在 switch case 中使用字符串,但这仅仅是一个语法糖。内部实现在 switch 中使用字符串的 hash code。 从Java 7 开始,Java 语言支持在switch语句中直接使用String类型的变量。之前的版本只允许在switch语句中使用整型、枚举和一些特定的类(比如Character、Byte、Short和Integer)。 使用字符串作...
类型为char、byte、short或int的常量表达式, 枚举常量, 从Java SE 7开始,case标签还可以是字符串字面量。
事实上,从Java SE 7开始,switch语句已经可以用于判断字符串了,但需要注意一些限制。 使用switch判断字符串 让我们来看一个简单的例子,使用switch语句判断一个字符串的值: Stringfruit="apple";switch(fruit){case"apple":System.out.println("Selected fruit is apple");break;case"banana":System.out.println("S...
可以看到对于字符类型来说,底层实际上比较的是 ascii 码,编译器会把char型变量转换成对应的 int 型变量。但发现字符串类型没有变化,难不成是完美适配?【不存在的,仅仅是因为博主的idea或者是jdk版本的问题没有看到它的真实面貌】 借用其它博主的case,代码如下: public class switchDemoString { public static void...
switch-case语法对应的是jvm中的lookupswitch指令和tableswitch指令,两者都只支持int类型。满足要求的JDK数据...
case 语句的字符串是已知的,所以可以在编译期求出 hash 值填到 bytecode 里,类似 C++ 的 constexpr...
在Java中,常量是可以用于switch语句的。switch语句可以用来根据不同的常量值执行不同的代码块。常量可以是整数、字符、字符串或枚举类型。在switch语句中,case子句中的值必须是常量,不允许使用变量或表达式。例如: final int num = 2; switch (num) { case 1: System.out.println("One"); break; case 2: ...
case 98: return 2; default: return Integer.MAX_VALUE; } } 那么对于 String 来说,利用的就是 hashCode() 函数了,但是 两个不同的字符串 hashCode() 是有可能相等的,这时候就得靠 equals() 函数了,例如存在 switch 语句: public int stringSwitch(String ss) { ...
1.switch 语句中的变量类型必须是 byte、short、int 或者 char这几种其中一种,并且是确定的值。从 Java SE 7 开始,支持字符串 String 类型,同时 case 标签必须为字符串常量或字面量。 2.switch 语句可以拥有多个 case 语句。 3.case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量...