语法糖指的是计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。因为Java代码需要运行在 JVM 中, JVM 是并不支持语法糖的,语法糖在程序编译阶段就会被还原成简单的基础语法结构,这个过程就是解语法糖。所以在 Java 中,真正支持语法糖的是 Java编译器,真是换汤不换药,万变不离其...
首先回顾一下Java编译,javac命令可以将后缀名为.java的源文件编译成后缀名为.class的可以运行于 JVM 的字节码文件。通过查看 com.sun.tools.javac.main.JavaCompiler 的源码,会发现在 compile() 中有一个步骤就是调用 desugar(),这个方法就是负责解语法糖的实现。 Java 中最常用的语法糖主要有泛型、变长参数...
Java语法糖概念 1. 语法糖Syntactic Sugar 糖衣语法,方便开发人员使用,JVM并不识别,会在编译阶段解语法糖,还原为基础语法。 2. com.sun.tools.javac.main.JavaCompiler中的deSugar方法,负责解语法糖的实现。 3. 常见的语法糖有泛型、变长参数、条件编译、自动拆装箱、内部类等。 具体实现 1. switch从1.7支持St...
说到编译,大家肯定都知道,Java语言中,javac命令可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机的字节码。如果你去看com.sun.tools.javac.main.JavaCompiler的源码,你会发现在compile()中有一个步骤就是调用desugar(),这个方法就是负责解语法糖的实现的。 Java 中最常用的语法糖主要有...
Java 在编译的时候通过 com.sun.tools.javac.comp.Lower 处理语法糖,下面列举了 Java 常用的语法糖。1.条件编译:如下代码中 FLAG 是 final 类型,因此编译后可以省去这个代码:通过 com.sun.tools.javac.comp.Lower.visitIf 来处理。编译结果如下,run 方法是个空方法:如果了解 com.sun.tools.javac.comp....
来自专栏 · Java基本功 语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身的功能来说没有什么影响,只是为了方便程序员进行开发,提高开发效率,使用这种语法写出来的程序可读性也更高。说白了,语法糖就是对现有语法的一个封装。 但其实,Java虚拟机是并不支持语法糖的,语法糖...
Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有以下几种: 1. 泛型与类型擦除 2. 自动装箱与拆箱,变长参数、 3. 增强for循环 4. 内部类与枚举类 ...
因此,可以说Java语言的泛型机制本质上是一种语法糖,与C++和C#的泛型实现相比,其优雅性略显不足。在将上述包含泛型的源代码编译成class文件后,泛型信息会被擦除,同时会引入相应的强制类型转换操作。这种擦除和转换的过程是在编译阶段自动完成的,以确保生成的字节码能够与Java虚拟机兼容。然而,这也意味着在运行...
for-each循环是Java中最常见的语法糖之一。它可以让我们更加方便地遍历数组或集合。例如,我们可以使用以下代码来遍历一个字符串数组:String[] arr = {"hello", "world", "java"};for (String s : arr) { System.out.println(s);} 在这个例子中,我们使用for-each循环遍历了一个字符串数组,并且在控...
Java的语法糖:让编程更加丝滑 在编程的世界里,“语法糖”(Syntactic Sugar)是一个有趣且实用的概念。它指的是编程语言中为了增加可读性或简化代码而提供的一些便捷写法,这些写法在功能上并不提供新的特性,但在使用时能够极大地提升开发者的体验和效率。