2020-03-11 常用关键字

2020-03-14  本文已影响0人  BJ你若盛开

7.1 如何证明 static 静态变量和类无关?

答:从三个方面就可以看出静态变量和类无关。

我们不需要初始化类就可直接使用静态变量;

我们在类中写个 main 方法运行,即便不写初始化类的代码,静态变量都会自动初始化;

静态变量只会初始化一次,初始化完成之后,不管我再 new 多少个类出来,静态变量都不会再初始化了。

不仅仅是静态变量,静态方法块也和类无关。

7.2 常常看见变量和方法被 static 和 final 两个关键字修饰,为什么这么做?

答:这么做有两个目的:

变量和方法于类无关,可以直接使用,使用比较方便;

强调变量内存地址不可变,方法不可继承覆写,强调了方法内部的稳定性。

7.3 catch 中发生了未知异常,finally 还会执行么?

答:会的,catch 发生了异常,finally 还会执行的,并且是 finally 执行完成之后,才会抛出 catch 中的异常。

不过 catch 会吃掉 try 中抛出的异常,为了避免这种情况,在一些可以预见 catch 中会发生异常的地方,先把 try 抛出的异常打印出来,这样从日志中就可以看到完整的异常了。

7.4 volatile 关键字的作用和原理

答:这个上文说的比较清楚,可以参考上文。

总结

Java 的关键字属于比较基础的内容,我们需要清晰明确其含义,才能在后续源码阅读和工作中碰到这些关键字时了然于心,才能明白为什么会在这里使用这样的关键字。比如 String 源码是如何使用 final 关键字达到起不变性的,比如 Java 8 集合中 Map 是如何利用 default 关键字新增各种方法的,这些我们在后续内容都会提到。

上一篇下一篇

猜你喜欢

热点阅读