关于java类在加载的时候被java虚拟机的静态编译器成.class文件的过程

java语言是一种跨平台的语言,一次编译处处运行,编译的过程就是转化为字节码文件(.class文件)的过程,下面的文章就是简单的介绍这个转化的流程。

在每个java类被虚拟机加载的类格式都是class文件的格式,那么.java文件是怎么样被转变为.class文件的呢,现在看一下下面的这张转化的流程图(敲黑板的时间到了哈!)

看图说话:源码转化成字节码的过程主要经过了词法解析,语法解析,语义分析,生成字节码最后生成字节码文件。

词法解析:通过空格分隔出单词,操作符,控制符等信息,将其形成token流传递给语法解析器;

语法解析:语法解析的过程是把token流按照java语法的规范组装成一颗语法树,如图所示的x=(y+7)*z表达式在转化为如图所示的语法树;

语义分析:在语义分析的阶段,会分析关键字的使用是否合理,类型是否匹配,作用域是否正确,当语义分析完成后就可以生成字节码

这个转化为字节码文件的过程,我们可以用javac命令进行验证:比如说如下的代码

class Person{
public void static main(String[] args){
Object obj=new Object();
}  }

关键字static的位置使用错误,利用javac编译文件时候,就会报错:

.\Person.java:3: 错误: 需要<标识符>
public void static main(String[] args)
           ^
.\Person.java:3: 错误: 需要'('
public void static main(String[] args)
            ^
.\Person.java:3: 错误: 方法声明无效; 需要返回类型
public void static main(String[] args)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值