Sunday, 9 October 2011

Why we use Static Keyword in JAVA

The static keyword can be used in 3 scenarios

1) static variables
2) static methods
3) static blocks of code.

Static Variable:
It is a variable which belongs to the class and not to object(instance). Static variables are initialized only once, at the start of the execution. These variables will be initialized first, before the initialization of any instance variables. A single copy to be shared by all instances of the class. A static variable can be accessed directly by the class name and doesn’t need any object.

Syntax : <class-name>.<variable-name>
Static Method:It is a method which belongs to the class and not to the object(instance).A static method can access only static data. It can not access non-static data (instance variables). A static method can call only other static methods and can not call a non-static method from it. A static method can be accessed directly by the class name and doesn’t need any object.

Syntax : <class-name>.<method-name>

A static method cannot refer to "this" or "super" keywords in anyway.

Note:
Main method is static , since it must  be accessible for an application to run , before any instantiation takes place.

Example:



class Student {

int a;

static int b; 

Student()


{

b++;
}

public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
}


class Demo{
public static void main(String args[]){
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
}
}



java-static-variable

Following diagram shows , how reference variables & objects are created and static variables are accessed by the different instances.
java-static


Static Block
The static block, is a block of statement inside a Java class that will be executed when a class is first loaded in to the JVM

class Test{
  static {
     //Code goes here
  }
}


A static block helps to initialize the static data members, just like constructors help to initialize instance members



No comments:

Post a Comment