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文件。

 javac做了些什么?


主要由4个模块组成。

词法分析器:识别Java中的if、else、for、while等关键字及其语句的合法性,形成符合规范的Token流。

语法分析器:对形成的Token流进行语法分析,检查它们形成的组合是否符合Java语法规范,形成抽象的语法树。

语义分析器:将foreach、注解等复杂的语法转换成最简单的语法,形成注解过后的语法树。

字节码生成器:将注解过后的语法树翻译器字节码。


  在之前的面试讲解中我们经分析了由常量表达式计算出的字符串(字面量+字面量),为   什么并不会产生多个对象?


   因为javac在编译期间,已经对这些字符串进行了合并操作。


(完)

恭喜你今天又收获了新知识

遇到学习问题?欢迎留言或微信对话框咨询!


                                                                       


 一份来自经验


学习推荐


免费

以上是关于Java面试题—Javac编译器的主要内容,如果未能解决你的问题,请参考以下文章

java面试题(自用)

高频java 面试题

java面试题

Java面试题(Java基础篇)

Java基础面试题及答案

最常见的Java面试题及答案汇总