相关疑难解决方法(0)

静态和非静态初始化代码块之间有什么区别

我的问题是静态关键字的一个特定用法.可以使用static关键字来覆盖不属于任何函数的类中的代码块.例如,以下代码编译:

public class Test {
    private static final int a;    
    static {
        a = 5;
        doSomething(a);
    }
    private static int doSomething(int x) {
        return (x+5);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你删除static它抱怨的关键字,因为变量afinal.但是,可以删除两个finalstatic关键字并使其编译.

这两种方式让我感到困惑.我怎么能有一个不属于任何方法的代码部分?如何调用它?一般来说,这种用法的目的是什么?或者更好,我在哪里可以找到关于此的文档?

java static static-initializer

345
推荐指数
8
解决办法
23万
查看次数

Java中的静态块与初始化程序块?

可能重复:
静态初始化块

请考虑以下代码:

public class Test {
    {
        System.out.println("Empty block");
    }
    static {
        System.out.println("Static block");
    }
    public static void main(String[] args) {
        Test t = new Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们知道首先执行静态块,然后执行块.但问题是我从来没有能够理解块的实际效用.任何人都可以展示一个真实的例子 -

  • 无论静态正在使用的块
  • 无论静态块具有不同的事业

java static-block initialization-block

79
推荐指数
2
解决办法
7万
查看次数

实例初始化器与构造函数有何不同?

换句话说,为什么需要实例初始化器?在构造函数上编写实例初始化程序有什么区别或优势?

java instantiation

71
推荐指数
3
解决办法
2万
查看次数