java jdk5.0中switch 语句只能探测int类型值 点
时间: 2023-04-05 20:03:19 浏览: 69
可以回答这个问题。在 JDK 5.0 中,switch 语句只能探测 int 类型的值,这是因为在此之前,switch 语句只能探测枚举类型和字符类型的值,而 JDK 5.0 引入了自动装箱和拆箱的特性,使得 int 类型的值也可以被探测。
相关问题
jdk7和jdk8中switch区别
在 JDK 7 中,switch 语句只能支持整数、枚举和字符串类型,而在 JDK 8 中,switch 语句还可以支持表达式(如整数、枚举和字符串类型的表达式)以及变量(如字节、短整数、字符和布尔类型的变量)。此外,JDK 8 还支持使用 lambda 表达式在 case 语句中编写代码块。
在 JDK 7 中,switch 语句只能使用常量表达式(如 final int x = 1;),而在 JDK 8 中,switch 语句还可以使用常量表达式(如 final int x = 1;)和枚举常量。
在 JDK 7 中,switch 语句中的 case 标签不能重复,而在 JDK 8 中,case 标签可以重复。
在 JDK 7 中,switch 语句只能在块级别中使用,而在 JDK 8 中,switch 语句可以在表达式级别中使用。
Android jdk17 switch语句报错Constant expression required
Android中使用JDK17以上版本的Java编译器,会出现switch语句报错"Constant expression required"的问题,这是因为在JDK17中,switch语句的条件表达式支持使用枚举类型,但是在Android中,这个特性还没有被支持。
解决方法是将switch语句的条件表达式改为使用整数类型或字符串类型,或者使用if-else语句来代替switch语句。例如,如果原来的代码是这样的:
```java
enum Color {
RED, GREEN, BLUE
}
Color color = Color.RED;
switch (color) {
case RED:
// do something
break;
case GREEN:
// do something
break;
case BLUE:
// do something
break;
}
```
可以将switch语句改为使用if-else语句:
```java
enum Color {
RED, GREEN, BLUE
}
Color color = Color.RED;
if (color == Color.RED) {
// do something
} else if (color == Color.GREEN) {
// do something
} else if (color == Color.BLUE) {
// do something
}
```
或者将Color类型的枚举值映射为整数类型的常量:
```java
enum Color {
RED(0), GREEN(1), BLUE(2);
private final int value;
Color(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
Color color = Color.RED;
switch (color.getValue()) {
case 0:
// do something
break;
case 1:
// do something
break;
case 2:
// do something
break;
}
```