补充
- 静态代码块、类加载
-
- 1.静态代码块
- 2.类加载
- final
静态代码块、类加载
1.静态代码块
- 类加载时,触发静态代码块的执行(仅一次)
- 执行地位:静态属性初始化之后
- 作用:可以静态属性赋值,或必要的初始行为
2.类加载
- JVM首次使用某个类时,通过CLASSPATH查该类的.class文件
-
将.class文件中对类的描述信息加载到内存中,进行保存
-如:包名,类名,父类,属性,方法,构造方法
- 加载时机
- 创建对象
- 创建子类对象
- 访问静态属性
- 调用静态方法
- 主动加载:Class.forName(“全限定名”)
final
- final修饰类(最终类),此类不可以被继承
- String、Math、System均为final修饰的类,不能被继承
- final修饰方法,此类不可以重写
- final修饰变量:此变量值不能改变(常量)
- 实例常量不在提供默认值,必须手动赋予初始值。
- 赋值时机:直接初始化或构造方法中,
- 注意:在构造方法中为实例常量赋值,必须保证所有的构造方法都能够赋值
- 静态常量不在提供默认值,必须手动赋予初始值
- 赋值时机:显示初始化,静态代码块
- 对象常量
- final修饰基本类型,值不可以改变
- final修饰引用类型,地址不可以改变