这是示例代码:
class A {
static {
int a;
class B {
}
}
public static void main(String[] args){
// cannot access class B and in a;
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道static这个上下文中的关键字是什么意思.我在其中声明了一个int变量和一个类.但我不能在A类或主方法中使用它.我编译,它不会产生任何错误.所以,我认为这种声明有一些目的.
这是一个静态初始化块.您可以使用它来收集静态/类成员的初始化.
类似地,您可以使用非静态初始化块来初始化每个新对象的实例成员:
class A
{
static int a;
private int b;
// static/class initialization:
static
{
// initialize class members
a = 5;
}
// instance initialization:
{
// initialize instance members
b = 5;
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子很简单,你只需要在它们的声明中初始化变量:static int a = 5实际上通常会更清楚.但是在初始化是多步骤时使用初始化块,或者通常更复杂,例如,设置数据库连接.
有关更多示例,请参阅:从Java教程初始化字段.