• Java语法糖


      语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。

      语法糖的存在主要是方便开发人员使用。但其实,Java虚拟机并不支持这些语法糖。这些语法糖在编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。

    语法糖一:switch支持String和枚举

      switch 语句中的变量类型可以是: byte、short、int 或者 char。对于byte、short、int类型,直接进行数值的比较。对于char类型则是比较其ascii码。所以,对于编译器来说,switch中其实只能使用整型,任何类型的比较都要转换成整型。

    public void switchString(String str) {
            switch (str) {
                case "huang":
                    System.out.println("huang");
                    break;
                case "chen":
                    System.out.println("chen");
                    break;
                default:
                    System.out.println("default");
                    break;
            }
        }
    
        public void switchEnum(SexEnum sexEnum) {
            switch (sexEnum) {
                case MALE:
                    System.out.println("male");
                    break;
                case FEMALE:
                    System.out.println("female");
                    break;
                default:
                    System.out.println("default");
                    break;
            }
        }

    idea编译后

    public void switchString(String str) {
            byte var3 = -1;
            switch(str.hashCode()) {
            case 3052494:
                if (str.equals("chen")) {
                    var3 = 1;
                }
                break;
            case 99628461:
                if (str.equals("huang")) {
                    var3 = 0;
                }
            }
    
            switch(var3) {
            case 0:
                System.out.println("huang");
                break;
            case 1:
                System.out.println("chen");
                break;
            default:
                System.out.println("default");
            }
    
        }
    
        public void switchEnum(SexEnum sexEnum) {
            switch(sexEnum) {
            case MALE:
                System.out.println("male");
                break;
            case FEMALE:
                System.out.println("female");
                break;
            default:
                System.out.println("default");
            }
    
        }

      

  • 相关阅读:
    CPU和Memory压力测试方法
    WIN 系统怎么样查看EXpressCache功能
    OGG 源端与目标端 约束不一致
    oracle 查询角色具有的权限
    Mysql 主从一致校验工具------Maatkit工具包
    从库找不到对应的被删除的记录
    python安装包是出现错误解决
    mysql5.7用户密码策略问题
    Centos7上安装docker
    SQL通过身份证获取信息
  • 原文地址:https://www.cnblogs.com/517cn/p/10879085.html
Copyright © 2020-2023  润新知