欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中的语法糖

程序员文章站 2022-04-29 17:40:30
其实语法糖只不过是编译器实现的一些小把戏而已。 这些小把戏包含条件编译、断言、Switch语句与枚举及字符串结合、可变参数、自动装箱/拆箱、枚举、内部类、泛型擦除、增强for循环、lambda表达式、try-with-resources语句、JDK10的局部变量类型推断等等。。。 我感觉JDK版本的 ......

其实语法糖只不过是编译器实现的一些小把戏而已。

这些小把戏包含条件编译、断言、switch语句与枚举及字符串结合、可变参数、自动装箱/拆箱、枚举、内部类、泛型擦除、增强for循环、lambda表达式、try-with-resources语句、jdk10的局部变量类型推断等等。。。

我感觉jdk版本的更迭只不过多了些语法糖而已,其底层以及jvm并没有发生太大的改变

 

下面举两个例子,以便记忆。

条件编译

/**
 * 条件编译
 * option: 不需要参数
 */
public void ifcompilertest() {
    if(false) {
        system.out.println("false if");
    }else {
        system.out.println("true else");
    }
}

然后编译反编译之后的代码如下图所示:

java中的语法糖

很明显, javac编译器在编译时期的解语法糖阶段, 会将条件分支不成立的代码进行消除

 

可变参数

/**
 * 可变参数
 * option: --arrayiter false
 */
public void varargstest(string ... arr) {
    for (string s : arr) {
        system.out.println(s);
    }
}

然后编译反编译之后的代码如下图所示:

java中的语法糖

可变参数其实就是一个不定长度的数组, 数组长度随传入方法的对应参数个数来决定。可变参数只能在参数列表的末位使用