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