Static Block in Java [duplicate] Static Block in Java [duplicate] java java

Static Block in Java [duplicate]


It's a static initializer. It's executed when the class is loaded (or initialized, to be precise, but you usually don't notice the difference).

It can be thought of as a "class constructor".

Note that there are also instance initializers, which look the same, except that they don't have the static keyword. Those are run in addition to the code in the constructor when a new instance of the object is created.


It is a static initializer. It's executed when the class is loaded and a good place to put initialization of static variables.

From http://java.sun.com/docs/books/tutorial/java/javaOO/initial.html

A class can have any number of static initialization blocks, and they can appear anywhere in the class body. The runtime system guarantees that static initialization blocks are called in the order that they appear in the source code.

If you have a class with a static look-up map it could look like this

class MyClass {    static Map<Double, String> labels;    static {        labels = new HashMap<Double, String>();        labels.put(5.5, "five and a half");        labels.put(7.1, "seven point 1");    }    //...}

It's useful since the above static field could not have been initialized using labels = .... It needs to call the put-method somehow.


It's a block of code which is executed when the class gets loaded by a classloader. It is meant to do initialization of static members of the class.

It is also possible to write non-static initializers, which look even stranger:

public class Foo {    {        // This code will be executed before every constructor        // but after the call to super()    }    Foo() {    }}