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.
Example
: 1
| 
// 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
static block called
10
Also, static blocks are
executed before constructors. For example, check output of following Java
program.
Example :
| 
// 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
static block called
Constructor called
Constructor called
 
No comments:
Post a Comment