DEV Community

loading...

What exactly "static" keyword is in Java?

saiteja623
Full stack developer
・2 min read

Many of us still get confused with the keyword static. Now, we will discuss how static keyword is used? and how it helps to save lots of code from rewriting?

Look at the following code

public class staticDemo{
           public static void main(String args[]){
                     System.out.println("Hello world!");  //prints "Hello world"
            }
}
Enter fullscreen mode Exit fullscreen mode

"Hello world" is the basic programme right ?.It is how someone starts learning java. Do you ever noticed that the main method has a keyword static?. What this static does?.

By using static keyword in main() method , we can call the main() method without any instance of object i.e., We can call the static methods using class name.

Let's have another example -

class A{
     static void  show(){
         System.out.println("static method in class A");
    }
}  
public class staticDemo{
           public static void main(String args[]){
                     A.show() // prints  "static method in class A"
            }
}
Enter fullscreen mode Exit fullscreen mode

static variable in Java

static variables are the variables which are applicable to the all instances of the class declared it. When a variable is static its value is same for the all instances. If any one of the instance changes the static variable value it reflects to all other instances too.

consider the following code -

class A{
    static int i;
} 
public class staticDemo{
    public static void main(String args[]){
        A obj1= new A();
        A obj2 =new A();
        A obj3 =new A();
        obj3.i=10; 
       System.out.println(obj1.i); // 10
    }
}
Enter fullscreen mode Exit fullscreen mode

NOTE - static variables can be accessed in non-static methods. But non-static variables can't be accessed in static methods. Why that is so?, Since non-static variables need for an instance to call the variables and we can assign different values for non-static variables by creating multiple objects. So there will be an ambiguity for the compiler to understand for which value instance value I should access.

## static block in java -

static block is used for initializing the static variables. static block is executed only when the class is loaded into the memory i.e., only once.

class A{
    static  int i;
    static{
          i=9;
          System.out.println("static block in A");
    }
}   
public class staticDemo{
    static{
     System.out.println("static block in main");
     }
    public static void main(String args[]){
              System.out.println(A.i);
               System.out.println("static in main");


    }  
}
Enter fullscreen mode Exit fullscreen mode

Always static blocks are executed first. static block gets executed and then main() method gets executed. In main() method we have A.i here A class gets loaded into the memory and when memory is loaded static block gets executed and then the value of i gets printed, at last "static in main" gets printed.

// output of above code
static block in main
static block in A
9
static in main 
Enter fullscreen mode Exit fullscreen mode

Summary

  • variables and methods with the static keyword do not need an instance to access it. They can be accessed using class name.
  • static blocks are executed before constructors and methods.
  • If there are multiple static blocks, they are executed as per the sequence in the code.
  • non-static variables can't be accessed in static methods.

Thanks for the read!. I hope you have learnt something about static. If you feel something wrong please let me know :)

Let's get connect on Twitter.

Happy coding :)

Discussion (1)

Collapse
alainvanhout profile image
Alain Van Hout

Interesting!

Do note though that the title and tags say 'Java', while the content of the post says JavaScript.