黑马程序员_静态代码块

来源:互联网 发布:如何利用阳台 知乎 编辑:程序博客网 时间:2024/05/22 02:09

1、Java中的静态代码块定义 是在类定义中定义的一段代码块,特点是随着类的加载而执行并且只执行一次,用于给类进行初始化即当类被加载到类存时不需要对象的情况下需要对类进行一些初始化。看如下代码:

public class StaticCode {//静态代码块static{System.out.println("a");}}class StaticDemo{public static void main(String[] args) {//执行一次静态代码块new StaticCode();System.out.println("Hello World");}}
该段代码的执行输出为:

a

Hello World 

2、下面看下java类初始化的过程,查看如下代码

public class StaticCode {//静态代码块static{System.out.println("a");}{//对象初始化块System.out.println("b");}StaticCode(){//无参构造函数System.out.println("c");}StaticCode(String str){//有参构造函数System.out.println(str);}}class StaticDemo{public static void main(String[] args) {//执行一次静态代码块new StaticCode("d");System.out.println("Hello World");}}
查看该段代码,其输出为:

a

b

d

Hello World

原因是,

new StaticCode("d");这条语句执行的过程是首先加载类到内存中这时会先执行静态代码块,然后new对象的时候执行对象初始化代码块,最后调用带参数的构造函数。
其初始化过程为:类静态代码块--》对象初始化代码块--》构造函数