这个:
static { System.out.print("x "); }是一个 静态初始化块 ,并在加载类时调用。您可以根据需要在类中添加任意数量的对象,它们将按照其出现顺序(从上到下)执行。
这个:
{ System.out.print("y "); }是一个 初始化块
,并将代码复制到该类的每个构造函数的开头。因此,如果您的类有许多构造函数,并且它们都需要在开始时做一些普通的事情,则只需编写一次代码,并将其放在这样的
初始化块中 。
因此,您的输出非常合理。
正如Stanley在下面评论的那样,有关更多信息,请参见Oracle教程中描述初始化块的部分。



