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");
        }

    }

 

  

 

posted @ 2019-05-17 01:18  狱婪  阅读(251)  评论(0编辑  收藏  举报