概念:

代码块又称为初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过大括号包围起来。它在加载类时,或创建对象时隐式调用

基本语法:

[修饰符]{代码};

注意:

1、修饰符可选,要写的话,只能写static

2、结尾分号可以省略

代码块的好处:

1、相当于另外一种形式的构造器,可以做初始化操作,例如当多个构造器中都有重复的语句,可以抽取到初始代码块中

细节:

1、static代码块叫做静态代码块,作用就是对类进行初始化,而且它随着类的加载而执行,并且只会执行一次。如果是普通代码块,每创建一个对象就执行一次

2、类什么时候被加载

a)创建对象实例时(new)

b)创建子类对象实例,父类也会被加载,而且父类先被加载 

c)使用类的静态成员时(静态属性、方法)

3、普通代码块,在创建对象实例时,会被隐式的调用,被创建一次就会调用一次,如果只是使用类的静态成员时,普通代码块不会执行

4、创建一个对象时,在一个类的调用顺序:

a)调用静态代码块和静态属性初始化(静态代码块和静态属性初始化调用的优先级相同,如果有多个静态代码块和多个静态变量初始化,则按他们定义的顺序调用)

b)调用普通代码块和普通属性的初始化(和a)同理)

c)调用构造方法

举例:

java 代码块和代码的区别 java代码块作用_java

 

结果为:

java 代码块和代码的区别 java代码块作用_静态代码块_02

5、有继承关系时的调用顺序

a)父类的静态代码块和静态属性初始化

b)子类的静态代码块和静态属性初始化

c)父类的普通代码块和普通属性初始化

d)父类的构造器

e)子类的普通代码块和普通属性初始化

f)子类的构造器