javac 到底是什么?
javac 就是一个编译器,它把 Java 源代码编译成 Java 字节码,即 JVM 能够识别的二进制形式的文件。
javac 由什么构成?
- 词法分析器:识别源代码中的 Java 关键字(if、else、while 等),形成规范的 Token 流;
- 语法分析器:对 Token 流进行语法分析,检查它们形成的组合是否符合 Java 语法规范,形成抽象语法树;
- 语义分析器:将 foreach、注解等复杂的语法转换成最简单的语法,形成注解过后的语法树;
- 字节码生成器:将注解过后的语法树翻译成字节码;
附赠一个小问题
- 问:为什么源代码中即时计算的字符串(字面量 + 字面量)并不会产生多个对象?
- 答:因为 javac 在编译期间,已经对这些字符串进行了合并操作。