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

本文提供了一种在Java中使用switch case结构时,绕过变量不能作为case值限制的方法,通过使用逻辑运算符组合多个条件判断,实现灵活的case匹配逻辑。同时,讨论了不同Java版本对switch case的支持情况,并提出了一种适用于Java 1.6的解决方案。此方法在一定程度上提高了代码的可读性和灵活性,相比传统的if-else结构,提供了更多的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决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应该好一点。

望各位大侠指点。

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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值