Java 变量声明后的静态块是什么?

Java 变量声明后的静态块是什么?,java,static,Java,Static,我以前从未见过这个,它叫什么?这是一个类级变量,位于文件的开头 为了清楚起见,我指的是变量后面的static{} private static final UriMatcher URI_MATCHER; static { URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH); URI_MATCHER.addURI(AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY,

我以前从未见过这个,它叫什么?这是一个类级变量,位于文件的开头

为了清楚起见,我指的是变量后面的
static{}

private static final UriMatcher URI_MATCHER;
    static {
        URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
        URI_MATCHER.addURI(AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, SEARCH);
        URI_MATCHER.addURI(AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", SEARCH);
        URI_MATCHER.addURI(AUTHORITY, "books", BOOKS);
        URI_MATCHER.addURI(AUTHORITY, "books/#", BOOK_ID);
    }
这是一个静态初始化块。它可以在类内的任何位置声明(但在方法外),但按照惯例,它通常在初始化的静态变量之后写入。它在Java语言规范中指定

顾名思义,它通常用于在类加载时初始化类中静态属性的状态。从:

静态初始化块是一个普通的代码块,用大括号括起来,{},前面有static关键字(…),一个类可以有任意数量的静态初始化块,它们可以出现在类主体的任何地方。运行时系统保证按照静态初始化块在源代码中出现的顺序调用它们


这是代码的静态部分,在声明静态var URI_MATCHER为。它允许您“设置”静态字段,这在类实例的方法中无法正确完成。

它只是一个静态初始化块。签出:

用于初始化静态变量。正如您所知,您不能在类的构造函数中初始化它们,所以您可以使用
static
block 例如: 您希望用值1、2、3等填充静态数组。有两种方法:

public class Main {
    static int[] array1 = {1, 2, 3, 4 ...};

    static int[] array2;
    static {
        array2 = new int[N];
        for (int i = 0; i < N; i++) {
            array2[i] = i;
        }
    }
}
公共类主{
静态int[]数组1={1,2,3,4…};
静态int[]数组2;
静止的{
array2=新整数[N];
对于(int i=0;i
可能重复如果将数组值分配给
array2
first:-),可能会有所帮助