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