11. static 静态代码块的作用以及与代码块的区别

810 阅读3分钟

static 静态代码块的作用

静态代码块是指在类被加载时执行的一段代码,其关键字为static{}

静态代码块的主要作用有:

  1. 初始化静态变量:静态代码块可以用来初始化类中的静态变量,在类被加载时执行,可以保证静态变量在使用前已经被初始化。
  2. 对象计数器:静态代码块可以用来对对象进行计数,例如可以在静态代码块中定义一个静态变量,然后每次创建对象时将该静态变量加一,从而实现对象计数的功能。
  3. 创建数据库连接:静态代码块还可以用来创建数据库连接等资源,这样可以保证只在类被加载时创建一次,避免重复创建浪费资源。
  4. 异常处理:静态代码块还可以用来进行异常处理,例如可以在静态代码块中捕获异常并进行处理,从而保证在类被加载时就能够处理异常情况。

需要注意的是,静态代码块只会在类被加载时执行一次,且执行顺序是按照静态代码块出现的顺序依次执行。同时,静态代码块不能访问非静态成员变量和方法。

static代码块和代码块的区别

在Java中,代码块是指一段被包含在大括号内的代码片段,它们可以出现在类体、方法体或者控制语句(如if语句或循环语句)中。而static代码块是一种特殊的代码块,它只会在类加载时执行一次,并且是在类构造器(构造函数)之前执行的。

因此,主要区别在于:

  1. 执行时间:普通代码块是在程序运行到该代码块时才会执行,而static代码块则是在类加载时就会执行,只会执行一次。
  2. 作用域:普通代码块的作用域只在当前块内部,而static代码块的作用域仅限于该类的静态成员,即静态属性和静态方法。
  3. 使用场景:普通代码块主要用于在某个方法或控制语句中暂时存放需要特定执行时才能确定的代码,而static代码块常用于进行类级别的初始化操作,例如在类加载时需要从配置文件中读取数据并初始化静态属性等操作。

笔者

在饿汉式中,类加载时就会导致该但实例对象被创建。

关于我为什么要了解《static 静态代码块的作用以及与代码块的区别》,是因为我在学习单例模式-饿汉式:采用静态代码块的方式实现,遇到类一些不理解的东东,详见:在饿汉模式下,为什么要采用静态代码的方式实现 ?