静态代码块、普通代码块和构造函数

一、加载顺序

静态代码块>普通代码块>构造函数

注:如果一个类中有多个同一级别的代码块,则从上至下顺序加载。

二、加载次数

静态代码块当且仅当在类第一次被实例化的时候加载一次,而普通代码块和构造函数则在类每次被实例化时都要加载一次。

package cn.examination.test;

import org.junit.Test;

public class ThisTest {

public static String str = "1";

//构造函数

public ThisTest(){

str += "q";

}

//普通代码块1

{

str += "w";

}

//普通代码块2

{

str += "e";

}

//静态代码块1

static {

str += "r";

}

//静态代码块1

static {

str += "t";

}

/*

* 测试

*/

@Test

public void testA(){

new ThisTest();

System.out.println("第一次实例化:" + str);

new ThisTest();

System.out.println("第二次实例化:" + str);

new ThisTest();

System.out.println("第三次实例化:" + str);

}

}

执行结果:

第一次实例化:1rtweqweq

第二次实例化:1rtweqweqweq

第三次实例化:1rtweqweqweqweq

由此代码及执行结果可以很清晰的看出三者之间加载顺序、加载次数。

你可能感兴趣的:(静态代码块、普通代码块和构造函数)