Static
static方法内部的变量是没有线程安全问题的,因为数据运行在栈里,线程是隔离开的。
static修饰的类变量,方法,代码块以及内部类,都属于类成员,不属于实例成员。
对static修饰的类变量,方法,代码块初始化顺序:
父类的静态变量和代码块比子类优先初始化;
其中静态变量和代码块在main方法之前便已经初始化。
在main方法之后父类构造器和子类构造器才开始初始化。
注意一种特殊情况:
static修饰对象,注意其构造器内的语句先执行。
final
final修饰的类,无法继承
修饰的方法,无法被覆写
修饰的变量,声明时必须初始化,也不能修改其内存地址
要举String的例子
try catch finally
如果在try和catch中都遇到了异常,代码执行顺序是try -> catch -> finally
当finally执行后,再抛出异常
最终抛出的是catch的异常。
default
一般使用在接口上,对于该接口,子类无须强制实现,但自己必须有默认实现。
比如集合中的Map利用default关键字新增各种方法。