概述
类的组成:属性,方法,构造器,代码块,内部类
代码块分类:普通块,构造块,静态块,同步块(多线程)
静态代码块在Java中是一种特殊的代码结构,它使用static关键字修饰,并用一对大括号{}包围起来。
主要功能及特点
初始化类:静态代码块用于初始化类,为类的静态属性进行初始化。例如,我们可以在静态代码块中加载配置文件,创建数据库连接池等。
只执行一次:每个静态代码块只会执行一次。这是因为静态代码块随着类的加载而加载,而类在JVM中只加载一次。
提高代码执行效率:如果有些代码必须在项目启动的时候就执行,那么我们就可以使用静态代码块来实现,这种代码是主动执行的。这样可以避免每次使用类都执行,提高代码执行效率。
先于主方法执行:由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行
其他类型的代码块
构造代码块:构造代码块在每次创建对象时执行,并且在构造方法前执行。它可以给所有对象进行初始化。在继承关系中,父类的构造代码块先于子类的构造代码块执行,然后再执行父类的构造方法,最后执行子类的构造方法。
局部代码块:局部代码块位于方法内部,用于控制变量的生命周期,提高内存利用率。
同步代码块:同步代码块是被Java中的Synchronized关键词修饰的代码块,是一种线程同步机制
静态代码块,静态方法拓展
先引入java程序执行的步骤:
编译:Java源代码(.java文件)通过Java编译器编译成字节码文件(.class文件)。
装载字节码:编译好的.class文件交给JVM执行,即使用java命令,执行java xxx(.class文件的名称,不带后缀)。java命令将会启动JVM,并将后面的参数作为初始化类,通过JVM内的类加载器将字节码文件装载到内存中。
校验字节码:类的加载是通过类加载器进行的,加载完后,先由字节码校验器负责检查那些无法执行的明显有破坏性的操作。
解释字节码:JVM把每一条要执行的字节码交给解释器,翻译成对应的机器语言,最终由操作系统执行。
静态代码块及方法对应的步骤:
静态代码块:静态代码块在类加载阶段执行。当JVM首次通过类加载器加载类到内存时,就会执行静态代码块。这个阶段发生在解释字节码之前,也就是在运行时阶段的开始。
静态方法:静态方法的调用发生在运行时阶段,也就是在解释字节码的过程中。当JVM解释到调用静态方法的字节码指令时,就会执行该静态方法。