创建对象的意思
不是很理解“由于静态初始化块只在类加载时执行一次,所以当再次创建对象时并未执行静态初始化块”。
是指在再次创建对象时,除静态初始化块都要再被执行一次吗?
不是很理解“由于静态初始化块只在类加载时执行一次,所以当再次创建对象时并未执行静态初始化块”。
是指在再次创建对象时,除静态初始化块都要再被执行一次吗?
2016-08-22
是的。
看代码:
public class StaticCodeTest {
static String nation;
String name;
static {
nation = "China";
System.out.println("静态代码块执行了");
}
{
System.out.println("代码块执行了");
}
public StaticCodeTest(String name){
this.name = name;
System.out.println("构造方法执行了");
}
public static void main(String[] args){
StaticCodeTest code = new StaticCodeTest("jeomre");
new StaticCodeTest("hihi");
}
}
执行结果:
静态代码块执行了
代码块执行了
构造方法执行了
代码块执行了
构造方法执行了
分析:
在 main() 方法中,初始化了 2 个对象,可以查看到第二个对象初始化的时候,已经不执行静态代码块了,因为静态代码块的语句没有打印出来。这是因为在初始化第一个对象的时候,已经执行过了静态代码块了,可以看执行结果。
举报