Unlike C++, Java supports a special block, called static block (also called static clause) which can be used for static initializations of a class. This code inside static block is executed only once: the first time you make an object of that class or the first time you access a static member of that class (even if you never make an object of that class). For example, check output of following Java program.
// filename: Main.java class Test { static int i; int j; // start of static block static { i = 10 ; System.out.println( "static block called " ); } // end of static block } class Main { public static void main(String args[]) { // Although we don't have an object of Test, static block is // called because i is being accessed in following statement. System.out.println(Test.i); } } |
Output:
static block called
10
Also, static blocks are executed before constructors. For example, check output of following Java program.
// filename: Main.java class Test { static int i; int j; static { i = 10 ; System.out.println( "static block called " ); } Test(){ System.out.println( "Constructor called" ); } } class Main { public static void main(String args[]) { // Although we have two objects, static block is executed only once. Test t1 = new Test(); Test t2 = new Test(); } } |
Output:
static block called
Constructor called
Constructor called
What if we want to execute some code for every object?
We use Initializer Block in Java
References:
Thinking in Java Book
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
leave a comment
0 Comments