how to check the accessibility of the static and non-static variables by a static method in java?

The static keyword is a non-access modifier in Java and can be used for variables, methods, and code blocks. A static variable in Java belongs to a class, that is, it is initialized only once at the beginning of execution. By using static variables, all instances of the class share a copy, and they can be accessed directly through the class name, without any instances. The static method also belongs to the class and not to the instance. It can only access static variables but not non-static variables.

Example 1: static methods can access static variables.

Java

// Java program to check accessibility
// of static variables inside
// static methods

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);
	}
}

Output

Static variable:5

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

// Java program to check accessibility
// of non - static variables inside
// static methods

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);
	}
}

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 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 because it is static
		Student.b++;

		s1.printData();
	}
}

Output

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

In the above program, if we delete the comment of the increment method, an error will be raised, because the increment method is static, and the variable a is non-static. We already know that static methods cannot access non-static variables.

Submit Your Programming Assignment Details