天天看点

Java学习之补充(一)静态代码块、类加载final

补充

  • 静态代码块、类加载
    • 1.静态代码块
    • 2.类加载
  • final

静态代码块、类加载

1.静态代码块

  • 类加载时,触发静态代码块的执行(仅一次)
  • 执行地位:静态属性初始化之后
  • 作用:可以静态属性赋值,或必要的初始行为

2.类加载

  • JVM首次使用某个类时,通过CLASSPATH查该类的.class文件
  • 将.class文件中对类的描述信息加载到内存中,进行保存

    -如:包名,类名,父类,属性,方法,构造方法

  • 加载时机
    • 创建对象
    • 创建子类对象
    • 访问静态属性
    • 调用静态方法
    • 主动加载:Class.forName(“全限定名”)

final

  • final修饰类(最终类),此类不可以被继承
    • String、Math、System均为final修饰的类,不能被继承
  • final修饰方法,此类不可以重写
  • final修饰变量:此变量值不能改变(常量)
  • 实例常量不在提供默认值,必须手动赋予初始值。
    • 赋值时机:直接初始化或构造方法中,
    • 注意:在构造方法中为实例常量赋值,必须保证所有的构造方法都能够赋值
  • 静态常量不在提供默认值,必须手动赋予初始值
    • 赋值时机:显示初始化,静态代码块
  • 对象常量
    • final修饰基本类型,值不可以改变
    • final修饰引用类型,地址不可以改变