Java面试题—Javac编译器
Posted 动力节点Java学院
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java面试题—Javac编译器相关的知识,希望对你有一定的参考价值。
学习问题欢迎留言或对话框咨询
▼
我们在开发中都会用到Javac编译器,那么在面试中关于Javac部分面试官可能会问哪些问题呢?接下来为大家解析,希望对你面试有帮助。
我们开发中都会用到javac编译器,那咱们聊一下你对javac的理解,它的基本结构,以及是如何将Java源码编译成Java字节码的?
通过对javac的分析来深入理解编译器的原理。即javac把Java语法规则翻译成Java虚拟机语法规则。
javac做了些什么?
说白了,javac就是一个编译器;编译器就是把一种语言规则转换成另一种语言规则,也就是将对人友好的语言转换成对机器友好的语言。因此,javac是把Java源代码编译成Java字节码,即JVM能够识别的二进制;表面上就是将.java文件转成.class文件。
主要由4个模块组成。
词法分析器:识别Java中的if、else、for、while等关键字及其语句的合法性,形成符合规范的Token流。
语法分析器:对形成的Token流进行语法分析,检查它们形成的组合是否符合Java语法规范,形成抽象的语法树。
语义分析器:将foreach、注解等复杂的语法转换成最简单的语法,形成注解过后的语法树。
字节码生成器:将注解过后的语法树翻译器字节码。
在之前的面试讲解中我们经分析了由常量表达式计算出的字符串(字面量+字面量),为 什么并不会产生多个对象?
因为javac在编译期间,已经对这些字符串进行了合并操作。
(完)
恭喜你今天又收获了新知识
遇到学习问题?欢迎留言或微信对话框咨询!
一份来自经验
学习推荐
免费
以上是关于Java面试题—Javac编译器的主要内容,如果未能解决你的问题,请参考以下文章