zoukankan      html  css  js  c++  java
  • Switch能否用string做参数

    在jdk 7 之前,switch 只能支持 byte、short、char、int 这几个基本数据类型和其对应的封装类型。switch后面的括号里面只能放int类型的值,但由于byte,short,char类型,它们会 自动 转换为int类型(精精度小的向大的转化),所以它们也支持。

    注意,对于精度比int大的类型,比如long、float,doulble,不会自动转换为int,如果想使用,就必须强转为int,如(int)float;

    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后,整形,枚举类型,boolean,字符串都可以。

    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从而进行判断。

    具体可以参考:http://freish.iteye.com/blog/1152921

    
    

     

  • 相关阅读:
    sublime & atom 插件
    正则表达式必知必会读书笔记
    前端自动化工具
    CSS3效果收集
    JS 常用功能收集
    【1】Hover 效果收集
    javascript进阶高手必备知识
    ionic 实现仿苹果手机通讯录搜索功能
    ionic2APP 如何处理返回键问题
    三张图搞懂JavaScript的原型对象与原型链
  • 原文地址:https://www.cnblogs.com/lchzls/p/6711222.html
Copyright © 2011-2022 走看看