Java:类中间的静态关键字

hqt*_*hqt 1 java static class

这是示例代码:

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类或主方法中使用它.我编译,它不会产生任何错误.所以,我认为这种声明有一些目的.

pb2*_*b2q 7

这是一个静态初始化块.您可以使用它来收集静态/类成员的初始化.

类似地,您可以使用非静态初始化块来初始化每个新对象的实例成员:

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教程初始化字段.