Skip to content
Related Articles

Related Articles

How to Check the Accessibility of the Static and Non-Static Variables by a Static Method?
  • Last Updated : 04 Jan, 2021

The static keyword is a non – access modifier in Java which can be used for variables, methods, and block of code. Static variables in Java belong to the class i.e it is initialized only once at the start of the execution. By using static variables a single copy is shared among all the instances of the class, and they can be accessed directly by class name and don’t require any instance. The Static method similarly belongs to the class and not the instance and it can access only static variables but not non-static variables. 

Example 1: static methods can access static variables.

Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check accessibility
// of static variables inside
// static mathods
  
class GFG {
  
    // declaring variable 'a' as static
    static int a = 5;
  
    // main is also a static type
    public static void main(String args[])
    {
  
        // accessing value of
        // static variable
        System.out.println("Static variable:" + a);
    }
}

chevron_right


Output

Static variable:5

Example 2: We cannot access non-static variables inside a static method.

Java



filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to check accessibility
// of non - static variables inside
// static mathods
  
class GFG {
  
    // declaring variable 'a' as non - static
    int a = 5;
  
    // main is also a static type
    public static void main(String args[])
    {
  
        // accessing value of
        // non - static variable
        System.out.println("Non - Static variable:" + a);
    }
}

chevron_right


Output

prog.java:16: error: non-static variable a cannot be referenced from a static context
    System.out.println("Non - Static variable:" + a);
                                                  ^
1 error

Example 3: 

Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java Program to demonstrate the accessibility
// of static and non-static variables
// by static method
  
class Student {
  
    // initialized to zero
    int a;
  
    // initialized to zero when class is loaded
    // but not for each object created.
    static int b;
  
    // Constructor
    Student()
    {
  
        // incrementing static variable b
        b++;
    }
  
    // method for printing
    public void printData()
    {
        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);
    }
  
    /*public static void increment(){
     a++;
    }*/
}
  
// Driver class
class GFG {
  
    // main is a static block
    public static void main(String args[])
    {
  
        // creating instance
        Student s1 = new Student();
  
        s1.printData();
  
        // directly accessing variable 'b'
        // by class name beacuse it is static
        Student.b++;
  
        s1.printData();
    }
}

chevron_right


Output

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2

In the above program if we remove comments of the increment method then an error will be raised because the increment method is static and variable a is non-static and we already know static methods cannot access non – static variables.

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :