Java中的关键字【final static volatile 】

final

修饰类:禁止继承该类。为啥String使用final修饰?String的不可变性,无法修改。避免继承修改该语义。

修饰变量:表示不能改变引用。即C已经引用了A,C不能再引用B。

static:

修饰变量:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。static成员变量的初始化顺序按照定义的顺序进行初始化。

     static变量的生命周期是和类的生命周期相同的(类卸载的时候,该static变量也会被销毁)。

  类的生命周期:一般情况下,默认的系统类加载器在程序运行期间,是不会主动卸载类的,也就是说类的生命周期和进程运行的生命周期相同,特殊情况下,使用自定义的类加载器,可以主动的卸载某个类,对应该类的生命周期也会终止;

   在类使用完之后,如果满足下面的情况,类就会被卸载:

  • 该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。
  • 加载该类的ClassLoader已经被回收。(类加载器?)
  • 该类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。

修饰方法:为类class共有,不属于任何一个实例对象。

static代码块:在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次(很多初始化任务可能只需要执行1次)。

volatile :(和Java内存模型有关)

猜你喜欢

转载自www.cnblogs.com/lovelywxd/p/9171948.html