博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决JAVA switch case 里面case A, A不能为 变量的问题
阅读量:4053 次
发布时间:2019-05-25

本文共 988 字,大约阅读时间需要 3 分钟。

解决JAVA switch case 里面case A, A不能为 变量的问题

 

有个朋友问我Java switch case里面的用法,由于 switch case 和 if-else 工作原理不一样,可能某些公司会避免使用if-else而采用switch case的方法来解决问题。

在jdk1.6 中:

int i= "test".hashcode();

String s = "test";

switch (s.hashcode()) {

  case i :System.out.println("bad");

}//这种方法是不支持的。编译根本通过不了,因为 i 是一个变量

 

经过网上一翻查找,在jdk1.7中可能会支持这个功能。

但是问题就不能这么简单的解决,因为现在很多企业都没有在使用1.7的版本。

没事在电脑面前想出来一个办法,应该可以行得通在jdk1.6中解决 case不能使用变量的方法

上代码

public class TestHash {

 /**

  * Comments:
  * @author Jacky
  * Chinese :
  * @param args
  */
 public static void main(String[] args) {
  

   String s = "test";

 

   int i= "test".hashCode();

 

  switch ( ("test1".hashCode()== i ? 1:1) *("test2".hashCode() == i ? 2:1) *(s.hashCode() == i ? 3 :1) ){

             case   1 :System.out.println("not good");break;

             case   2 : System.out.println("not good"); break;

             case   3  : System.out.println("good"); break;

 

             default : System.out.print(4); break;

  }//switch

 }// main

 

}//class

 

ok,我运行了下,运行结果是打印 good

看来这样是行得通的,而且也避免了case后面使用变量;但是效率应该还算行吧。比If-else应该好一点。

望各位大侠指点。

还有一种办法,枚举类型也可以行得通!

转载地址:http://rotci.baihongyu.com/

你可能感兴趣的文章
Linux查看端口占用情况,并强制释放占用的端口
查看>>
hashcode详解
查看>>
String类中的equals方法总结
查看>>
==和equals的区别和联系
查看>>
centOS7永久关闭防火墙(防火墙的基本使用)
查看>>
CentOS7安装MySQL冲突和问题解决小结
查看>>
CentOS下MySQL的彻底卸载
查看>>
hive lateral view语句
查看>>
scala中的函数组合器map,foreach,flatmap,flatten,filter,zip等用法
查看>>
Spark RDD API
查看>>
spark中算子详解:aggregateByKey
查看>>
Spark自定义排序
查看>>
Spark2.x 如何实现自定义排序(利用元组,类--隐式转换Ordering,Ordered等实现)
查看>>
Spark配置参数
查看>>
使用kafkachannel 启动flume报错
查看>>
Git常用命令
查看>>
ssh 如何方便的切换到其他节点??
查看>>
rank() over,dense_rank() over,row_number() over的区别
查看>>
只要你要,只要我有
查看>>
常用数据库的JDBC驱动程序写法
查看>>