What’s the difference between initialization within a static block:
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;
....
A static initialization blocks allows more complex initialization, for example using conditionals:
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: