switch语句表达式的值可是String吗

在JDK1.6以前的版本中,switch语句表达式的值必须是整形或字符型;

在JDK1.7版本中,switch除了整型和字符型,还可以是字符串类型。

但是,他是怎么实现的呢?

实际上,Java虚拟机和字节码层次上只支持switch语句中使用与整数类型兼容的类型没有变,只是这个实现字符串比较的新特性是在编译器这个层次上实现的。实现的机制是:将字符串之间的比较转换为其哈希值的比较。参考文章:【Model_frog-java7中switch比较字符串

String s1="s1";
switch (s1) {
    case "s1":
	System.out.println(s1);
	break;
    default:
	break;
}

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/85012256