校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > switch、default
题目

Switch能否用string做参数

解答

jdk7之前 switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型。

switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会?自动?转换为int类型(精精度小的向大的转化),所以它们也支持。

jdk1.7后 整形,枚举类型,字符串都可以。

原理

switch (expression)  // 括号里是一个表达式,结果是个整数{
case constant1: // case 后面的标号,也是个整数
group of statements 1;
break;
case constant2:
group of statements 2;
break;
...
default:
default group of statements
}

jdk1.7后,整形,枚举类,字符串都可以。

public class TestString {

static String string = "123";
public static void main(String[] args) {
switch (string) {
case "123":
System.out.println("123");
break;
case "abc":
System.out.println("abc");
break;
default:
System.out.println("defauls");
break;
}
}
}

为什么jdk1.7后又可以用string类型作为switch参数呢?

其实,jdk1.7并没有新的指令来处理switch string,而是通过调用switch中string.hashCode,将string转换为int从而进行判断。

C 0条回复 评论

帖子还没人回复快来抢沙发