请问此方法是一个默认的构造函数,还是一个匿名的方法。
这既不是前者,也不是后者。而是static成员初始化区域。由于static成员隶属于整个类,在任何对象生成之前便已经存在,因此不能在构造函数中初始化,于是Java便提供了这种语法来初始化static成员。当然,如果去掉static,便成了初始化一般成员的区域。所以,Java里头初始化一个非静态成员至少有三种方法:定义时直接初始化,初始化区域,构造函数。
这既不是前者,也不是后者。而是static成员初始化区域。由于static成员隶属于整个类,在任何对象生成之前便已经存在,因此不能在构造函数中初始化,于是Java便提供了这种语法来初始化static成员。当然,如果去掉static,便成了初始化一般成员的区域。所以,Java里头初始化一个非静态成员至少有三种方法:定义时直接初始化,初始化区域,构造函数。
只是一个对静态变量初始化块
属于静态内部类 ,用于当内部类不需要访问外部类对象时才用。
static //<---------请问此方法是一个默认的构造函数,还是一个匿名的方法
{ ^
System.out.println(s1); |
//System.out.println(s2); |
}
属于内部类中的静态初始化快。当静态字段需要复杂的初始化代码时,可以使用静态初始化快。
他在构造函数之前执行。
这是static成员初始化block,
如果由这个类产生一个对象 new TopLevel()
这个过程中会先初始化static block先