java源码编译为字节码的流程

 

1. 词法、语法分析和填充符号表

1.1 词法分析:将源代码的字符流转为Token集合,关键字、变量名、字面量和运算符都可成为Token,比如代码“int i = a + 2”,那么int, i, =, a, +, 2这六个都是Token。

1.2 语法分析:根据Token序列构建抽象语法树的过程,抽象语法树的各个节点是一个语法结构,如类型、修饰符以及返回值等。

1.3 填充符号表:根据信息构建一个类似键值对的表格,用于后面的语义分析阶段。

 

2. 注解处理

某些注解在编译期间可以修改抽象语法树的任意元素,因此,当处理注解对语法树进行了修改,编译器会重新进行词法、语法分析并填充符号表,直至注解处理结束。

 

3. 标注检查、数据及控制流分析和字节码生成

3.1 标注检查:经过第一和第二步得到的抽象语法树只能表示一个结构正确的源程序,但无法保证源程序符合逻辑。而标注检查会对变量使用前是否已声明、变量与赋值间的数据类型是否匹配等内容进行检查。

3.2 数据及控制流分析:会对方法是否有返回值、是否所有的受检异常都被正确处理等内容进一步验证。

3.3 解语法糖:语法糖主要是为了便于程序员代码开发的一种技术。比如常见的泛型、变长参数、增强

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值