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. A static method also belongs to a class rather than an instance, it can only access static variables but not non-static variables.
Example 1: static methods can access static variables.
// 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
Australia
UK
UAE
Singapore
Canada
New
Zealand
Malaysia
USA
India
South
Africa
Ireland
Saudi
Arab
Qatar
Kuwait
Hongkong
Copyright 2016-2023 www.programmingshark.com - All Rights Reserved.
Disclaimer : Any type of help and guidance service given by us is just for reference purpose. We never ask any of our clients to submit our solution guide as it is, anywhere.