java 中的静态(static)代码块

来源:互联网 发布:怎么投诉淘宝公司 编辑:程序博客网 时间:2024/05/19 10:54

类字面常量

  • final 静态域不会触发类的初始化操作
    • 非 final static 静态域(以及构造器其实是一种隐式的静态方法)
    • Class.forName():会自动的初始化;
      • 使用 .class来创建对 class 对象的引用,不会自动地初始化该 class 对象,初始化被延迟到了对静态方法(构造器隐式的是静态的)或者非final静态域(注意final静态域不会触发初始化操作)进行首次引用时才执行。

1. static{} 静态代码块与 {} 非静态代码块

  • 二者均是在 JVM 加载类时,且在构造函数执行之前执行,在类中可以定义多个, 一般在代码块中对一些 static 变量进行赋值;
  • 静态代码块的执行顺序要先于非静态代码块(静态代码块 ⇒ 非静态代码块 ⇒ 构造方法)
  • 静态代码块仅在第一次调用 new 时仅执行一次,之后不再执行,而非静态代码块在每 new 一次就执行一次,
    • 非静态代码块可在普通方法中定义,

2. static{} 静态代码块与静态方法

  • 静态代码块必须在项目启动的时候就执行,这种代码是主动执行的,
    • 而需要在项目启动的时候就初始化,不通过创建对象,由其他程序来调用,需要使用静态方法,显然这种代码是被动执行的;静态方法在类加载的时候,就已经加载,可以用类名直接调用;
  • 如 main 方法就必须是静态的,其作为程序的入口;

references

  • static{}静态代码块与{}普通代码块之间的区别
  • java中静态代码块的用法 static用法详解
原创粉丝点击