Static Keyword

Static keyword can be used with class, variable, method and block. Static members belong to the class instead of a specific instance, this means if you make a member static, you can access it without object. Let’s take an example to understand this:

Here we have a static method myMethod(), we can call this method without any object because when we make a member static it becomes class level. If we remove the static keyword and make it non-static then we must need to create an object of the class in order to call it.

Static members are common for all the instances(objects) of the class but non-static members are separate for each instance of class.

class SimpleStaticExample
{
// This is a static method
static void myMethod()
{
System.out.println(“myMethod”);
}

public static void main(String[] args)
{
/* You can see that we are calling this
* method without creating any object.
*/
myMethod();
}
}

OUYPUT:

mymethod

  •  

STATIC VARIABLES

In other words you can say that only a single copy of static variable is created and shared among all the instances of the class. Memory allocation for such variables only happens once when the class is loaded in the memory.
Few Important Points:

  • Static variables are also known as Class Variables.
  • Unlike non-static variables, such variables can be accessed directly in static and non-static methods.

class JavaExample3{
static int var1;
static String var2;
//This is a Static Method
static void disp(){
System.out.println(“Var1 is: “+var1);
System.out.println(“Var2 is: “+var2);
}
public static void main(String args[])
{
disp();
}
}

OUTPUT:

var1 is: 0

var2 is: Null

Static Method:

Static Methods can access class variables(static variables) without using object(instance) of the class, however non-static methods and non-static variables can only be accessed using objects.
Static methods can be accessed directly in static and non-static methods.
Syntax:
Static keyword followed by return type, followed by method name.

static return_type method_name();

Example 1: static method main is accessing static variables without object
class JavaExample{
static int i = 10;
static String s = “universitymcqs.com”;
//This is a static method
public static void main(String args[])
{
System.out.println(“i:”+i);
System.out.println(“s:”+s);
}
}
Output:

i:10
s:universitymcqs.com

Static Class:

A class can be made static only if it is a nested class.

  1. Nested static class doesn’t need reference of Outer class
  2. A static class cannot access non-static members of the Outer class

We will see these two points with the help of an example:

class JavaExample{
private static String str = “universitymcqs.com”;

//Static class
static class MyNestedClass{
//non-static method
public void disp() {

/* If you make the str variable of outer class
* non-static then you will get compilation error
* because: a nested static class cannot access non-
* static members of the outer class.
*/
System.out.println(str);
}

}
public static void main(String args[])
{
/* To create instance of nested class we didn’t need the outer
* class instance but for a regular nested class you would need
* to create an instance of outer class first
*/
JavaExample.MyNestedClass obj = new JavaExample.MyNestedClass();
obj.disp();
}
}
Output:

universitymcqs.com