请问此方法是一个默认的构造函数,还是一个匿名的方法。
这既不是前者,也不是后者。而是static成员初始化区域。由于static成员隶属于整个类,在任何对象生成之前便已经存在,因此不能在构造函数中初始化,于是Java便提供了这种语法来初始化static成员。当然,如果去掉static,便成了初始化一般成员的区域。所以,Java里头初始化一个非静态成员至少有三种方法:定义时直接初始化,初始化区域,构造函数。

解决方案 »

  1.   

    都不是吧,在java编程思想中有对于这个问题的具体阐述,
    只是一个对静态变量初始化块
      

  2.   

    这是一个静态初始化块,在类装载的时候就会执行。比如说当你调用 Toplevel.NestLevel1.class时就会执行打印语句。或者是在Toplevel类外部直接生成NestLevL1时就会执行,如new TopLevel.NestLevel1();但是这个打印语句都执行一次,就是在类装载的时候,以后不管你new多少次NestLevel1都不会执行了
      

  3.   

    static class NestLevel1{}
    属于静态内部类 ,用于当内部类不需要访问外部类对象时才用。
    static          //<---------请问此方法是一个默认的构造函数,还是一个匿名的方法
        {                                           ^
          System.out.println(s1);                   |
          //System.out.println(s2);                 |
        }   
    属于内部类中的静态初始化快。当静态字段需要复杂的初始化代码时,可以使用静态初始化快。
    他在构造函数之前执行。
      

  4.   


    这是static成员初始化block,
     如果由这个类产生一个对象 new TopLevel()
    这个过程中会先初始化static block先