Java--关于编译时、运行时以及构建时

1.final关键字

static final  int number1 = 5;
static final  int number2 = 6;
 
static int number3 = 5;
static int number4= 6;

public static void main(String[ ] args) {
 
          int product1 = number1 * number2;         //line A

          int product2 = number3 * number4;         //line B
 
}

其中line A为编译时计算,line B为运行时计算。


2.方法重载与方法覆盖

方法重载:这个是发生在编译时的,方法重载也被称为编译时多态,因为编译器可以根据参数的类型来选择使用哪个方法。

方法覆盖:这个是在运行时发生的,方法重载被称为运行时多态,若子类A覆盖了父类B的方法,在编译期编译器不知道并且没法知道该去调用哪个方法,JVM会在代码运行的时候做出决定。

3.泛型

这个是发生在编译期的。编译器负责检查程序中类型的正确性,然后把使用了泛型的代码翻译或者重写成可以执行在当前JVM上的非泛型代码。这个技术被称为“类型擦除“。换句话来说,编译器会擦除所有在尖括号里的类型信息,来保证和版本1.4.0或者更早版本的JRE的兼容性。

4.异常

运行时异常:也称作未检测的异常(unchecked exception),这表示这种异常不需要编译器来检测。RuntimeException是所有可以在运行时抛出的异常的父类。一个方法除要捕获异常外,如果它执行的时候可能会抛出RuntimeException的子类,那么它就不需要用throw语句来声明抛出的异常。

例如:NullPointerException,ArrayIndexOutOfBoundsException,等等

受检查异常:都是编译器在编译时进行校验的,通过throws语句或者try{}cathch{} 语句块来处理检测异常。编译器会分析哪些异常会在执行一个方法或者构造函数的时候抛出。


5.其他

继承 – 发生在编译时,因为它是静态的

代理或者组合 – 发生在运行时,因为它更加具有动态性和灵活性。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值