为了账号安全,请及时绑定邮箱和手机立即绑定

创建对象的意思

不是很理解“由于静态初始化块只在类加载时执行一次,所以当再次创建对象时并未执行静态初始化块”。

是指在再次创建对象时,除静态初始化块都要再被执行一次吗?

正在回答

2 回答

再次创建对象时,由于再次加载了类,所以类下的代码块都要再次执行一遍,而静态代码块只能执行一次所以这时候就不执行了。

2 回复 有任何疑惑可以回复我~
#1

侬0O0侬

这才是标准解释
2016-08-27 回复 有任何疑惑可以回复我~

是的。

看代码:

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 个对象,可以查看到第二个对象初始化的时候,已经不执行静态代码块了,因为静态代码块的语句没有打印出来。这是因为在初始化第一个对象的时候,已经执行过了静态代码块了,可以看执行结果。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530716    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

创建对象的意思

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信