Javac编译原理

1,Javac是什么:

  • Javac 是一种编译器:将 Java 源码编译成 Java 字节码(二进制码),即将 .java 文件转成 .class 文件。

  • 检查语义:

    • 变量的类型是否匹配。
    • 变量在使用前是否已经初始化。
    • 能够推导出泛型方法的参数类型。
    • 字符串常量的合并。
  • 数据流分析:

    • 检查变量在使用前是否都已经被正确赋值。 除了 Java 的原始类型,如 int 、long、byte、double、char、float,都会有默认的初始化值。其他像 String 类型和对象的引用都必须在使用前先赋值。

    • 保证 final 修饰的变量不会被重复赋值,经过 final 修饰的变量只能赋 一次值,重复赋值会在这一步编译时报错,如果这个变量是静态变量,则在定义时就必须对其赋值。

    • 要确定方法的返回类型。检查这个方法返回值的引用类型是否匹配,若没有返回值,则不能有任何引用类型指向方法的这个返回值。

    • 所有的Checked Exception 都要捕获或者向上抛出。

    • 所有的语句都要被执行到,会检查是否有语句出现在一个return 方法的后面,因为在 return 语句后面的语句永远也不会被执行到。

    • 变量的自动装箱、自动拆箱等。

4,设计模式之访问者模式

  • 访问者模式:

    • 抽象访问者 Visitor : 声明所有访问者需要的接口。
    • 具体访问者 ConcreteVisitor:实现抽象访问者声明的接口。
    • 抽象节点元素 Element:提供一个接口,能够接受访问者作为参数传递个节点元素。
    • 具体节点元素 ConcreteElement:实现抽象节点元素声明的接口。
  • Enter作为一个访问者,实现抽象访问者 Visitor 中的所有接口,但是 Enter 这个访问者具体要实现什么功能由 Enter 自己定义。遍历这棵树使用统一接口 accept,每个节点元素都实现这个accept接口,但是不同节点元素的accept的实现是不同的,以区分不同的节点元素对应不同的功能。这就是访问者模式的思想

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值