Adam Matan Adam Matan - 1 year ago 109
Java Question

Java: When is a static initialization block useful?

What's the difference between initialization within a


public class staticTest {

static String s;
static int n;
static double d;

static {
s = "I'm static";
n = 500;
d = 4000.0001;

And individual static initialization:

public class staticTest {

static String s = "I'm static";
static int n = 500;
static double d = 4000.0001;


Answer Source

A static initialization blocks allows more complex initialization, for example using conditionals:

static double a;
static {
    if (SomeCondition) {
      a = 0;
    } else {
      a = 1;

Or when more than just construction is required: when using a builder to create your instance, exception handling or work other than creating static fields is necessary.

A static initialization block also runs after the inline static initializers, so the following is valid:

static double a;
static double b = 1;

static {
    a = b * 4; // Evaluates to 4
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download