java中的语法糖
程序员文章站
2022-10-08 15:33:45
其实语法糖只不过是编译器实现的一些小把戏而已。 这些小把戏包含条件编译、断言、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"); } }
然后编译反编译之后的代码如下图所示:
很明显, javac编译器在编译时期的解语法糖阶段, 会将条件分支不成立的代码进行消除
可变参数
/** * 可变参数 * option: --arrayiter false */ public void varargstest(string ... arr) { for (string s : arr) { system.out.println(s); } }
然后编译反编译之后的代码如下图所示:
可变参数其实就是一个不定长度的数组, 数组长度随传入方法的对应参数个数来决定。可变参数只能在参数列表的末位使用
上一篇: NPOI读写
下一篇: AI怎么快速绘制重复的背景图?
推荐阅读
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别
-
JAVA中的异常-知识整理
-
Java中keytool的使用
-
浅谈Java中hashCode的正确求值方法
-
JAVA开发中的一些规范讲解(阿里巴巴Java开发规范手册)
-
Java中finally和return的关系实例解析
-
浅谈Vue2.0中v-for迭代语法的变化(key、index)
-
Java中是使用增强for的null问题
-
详解java中的深拷贝和浅拷贝(clone()方法的重写、使用序列化实现真正的深拷贝)
-
Java日期时间API系列5-----Jdk7及以前的日期时间类TimeUnit在并发编程中的应用