public class Demo {
      {
          System.out.println("execute");
      }
}以上每次创建实例都会调用为什么?
还可以写多个?

解决方案 »

  1.   

    本来就是与实例相关的块,本来就该每个实例调用一次,java入门书籍上没讲?static{}块是只会调用一次
      

  2.   

    “实例初始化块”只是单单的 大括号,当每次创建一个类的实例时,在调用构造方法前,会先执行这段“实例初始化块”,“实例初始化块”的主要作用当你在一个类的不同构造方法内,有许多相同的代码段,那么,这些代码就可以单独提取出来,放在一个“实例初始化块里”,那么,每次创建一个对象时,就都会执行一次那代码块。
    而相对于“静态初始化块”,其只是在 大括号前面加了个 static,在类加载的时候执行,只会执行一次
      

  3.   

    编译器会把
    {
      System.out.println("execute");
      }
    这样的语句提到构造方法里面。