美文网首页程序员Java 杂谈
Java面试题,Javac编译器:如何将Java源码编译成Jav

Java面试题,Javac编译器:如何将Java源码编译成Jav

作者: ToEnd | 来源:发表于2017-12-14 01:28 被阅读166次

    面试题目

    我们开发中都会用到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,你可以关注我的微信公众号:java王者之路。有为Java新手们准备的零基础到高级java学习资源,有免费公开课、java系统学习路径 等等与大家分享。欢迎大家关注。

    相关文章

      网友评论

        本文标题:Java面试题,Javac编译器:如何将Java源码编译成Jav

        本文链接:https://www.haomeiwen.com/subject/ukmtwxtx.html