Java基础——switch-case

switch接受的参数类型有10种,byte,short,int,char,和他们的封装类Byte,Short,Integer,Character,引用类型的String(SE1.7之后),enum(SE1.5之后)。


又给自己挖个坑enum o(╥﹏╥)o Java博大精深


这是一篇关于Switch(String)的实现的译文转载:
http://www.importnew.com/14597.html
原文通过对Switch(String str)进行反编译,最后发现switch实现是通过hashcode()和equals(),switch后面跟着的还是整型。

/** * Java Program to demonstrate how string in switch functionality is implemented in * Java SE 7 release. */
public class StringInSwitchCase { 
      public static void main(String[] args) { 
            String mode = args[0]; 
            switch (mode) { 
                  case "ACTIVE": 
                        System.out.println("Application is running on Active mode"); 
                        break; 
                  case "PASSIVE":
                        System.out.println("Application is running on Passive mode"); 
                         break; 
                  case "SAFE": 
                          System.out.println("Application is running on Safe mode"); 
          } 
      } 
}

~~~插一句:反编译好像很吊啊,之前那篇自动拆装箱也是用反编译。

/** * Reverse Engineered code to show how String in Switch works in Java. */
import java.io.PrintStream; 

public class StringInSwitchCase{ 
      public StringInSwitchCase() { } 

      public static void main(string args[]) { 
             String mode = args[0]; 
            String s; switch ((s = mode).hashCode()) { 
                  default: break; 
                  case -74056953: 
                        if (s.equals("PASSIVE")) { 
                                    System.out.println("Application is running on Passive mode"); 
                         } 
                        break; 
                  case 2537357: 
                        if (s.equals("SAFE")) { 
                              System.out.println("Application is running on Safe mode"); 
                         } 
                        break; 
                  case 1925346054: 
                        if (s.equals("ACTIVE")) { 
                              System.out.println("Application is running on Active mode"); 
                         } 
                        break; 
               } 
          } 
}

总结一下:switch在实现String的时候就是一个语法糖,没有实际的内部功能,所以面试的时候可以说String只支持整型,然后bb一堆,吊爆了,但是笔试的时候还是要说switch支持String。
在上面那篇译文结尾,作者提到枚举比整型或者是String都要好,枚举博客见。


互勉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值