java源代码是如何变成class的【面试题详解】

今天爱分享给大家带来java源代码是如何变成class的【面试题详解】,希望能够帮助到大家。

读取源代码,将源代码转变成标记(Token流)集合,标记是编译过程的最小元素。如 int a = b + 2; —> int、a、=、b、+、2
词法分析,识别所有的代码中的每一个字节,每个词语是否合法,例如 white,if,else,return等等,识别出哪些是一个词语,哪些是标点符号,哪些是动词,哪些是名词
语法分析,检查是否符合java语法规范,例如 包括变量使用前是否声明,变量与赋值之间的数据类型是否匹配,if后面是否是括号,方法是否有返回值等等
语义分析,就是将复杂的语法转化为简单的语法,例如将foreach转化为for循环,还有一些注解注释等。最后生成一棵抽象的语法树,这棵语法树也就更接近目标语言的语法规则
生成字节码,将抽象的语法树,生成符合java虚拟机规范的字节码。通过javac编译器调用com.sun.tools.javac.jvm.Gen类遍历这棵语法树将java方法中的代码块转换成符合JVM语法的命令形式的二进制数据。按照JVM的文件组织格式将字节码输出到以class为扩展名的文件中,也就是生成最终的java字节码

人已赞赏
Java

Java中 JRE JDK JVM的区别【面试题详解】

2020-10-31 10:56:31

Java

java中 JVM的执行原理【面试题详解】

2020-10-31 10:59:01

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();