编译时期:检查是否有语法错误,如果没有就将其翻译为字节码文件,.class
运行时期:java虚拟机分配内存,解释执行字节码文件。
java编译时期会做一些优化操作。
1、方法重载 在编译时执行;方法重写 在运行时执行。
2、泛型(类型检测),在编译时。
3、注解,有的在编译时,有的在运行时。@Override注解就是典型的编译时注解,他会在编译时会检查一些简单的如拼写的错误(与父类方法不相同)等
同样的@Test注解是junit框架的注解,他是一个运行时注解,他可以在运行时动态的配置相关信息如timeout等。
4、AOP 可以在编译时,预编译时以及运行时使用。编译时:当你有源码的时候,AOP编译器(AspectJ编译器)可以编译源码并且生成编译后的class;预编译时:织入过程有时候也叫作二进制织入,用来织入到 已经存在的class文件;运行时:当被织入的对象已经被加载到JVM中后,可以动态的织入到这些类中的一些信息。
5、继承是在编译时期运行的
6、代理,也成为动态代理,在运行时期执行。
7、