一、加载顺序
静态代码块>普通代码块>构造函数
注:如果一个类中有多个同一级别的代码块,则从上至下顺序加载。
二、加载次数
静态代码块当且仅当在类第一次被实例化的时候加载一次,而普通代码块和构造函数则在类每次被实例化时都要加载一次。
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
由此代码及执行结果可以很清晰的看出三者之间加载顺序、加载次数。
网友评论