# Java Static Method, Variable And Block With Example - Complete Guide!

**URL:** <https://onehack.st/t/java-static-method-variable-and-block-with-example-complete-guide/58840>\
**Category:** Tutorials & Methods\
**Tags:** tools, tips-tricks\
**Created:** [September 24, 2019, 11:54pm UTC](https://onehack.st/t/java-static-method-variable-and-block-with-example-complete-guide/58840 "2019-09-24T23:54:42Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aina](https://onehack.st/user_avatar/onehack.st/aina/32/167469_2.png) [@Aina](https://onehack.st/u/Aina)\
**Post date:** [September 24, 2019, 11:54pm UTC](https://onehack.st/t/java-static-method-variable-and-block-with-example-complete-guide/58840/1 "2019-09-24T23:54:42Z")

</div>

The static can be:

- Static Variables
- Static Methods
- Static Blocks Of Code.

Let’s look at static variables and static methods first.

## What is Static Variable in Java?

Static variable in Java is variable which belongs to the class and initialized only once at the start of the execution.

- It is a variable which belongs to the class and not to object(instance)
- Static variables are initialized only once, at the start of the execution. These variables will be initialized first, before the initialization of any instance variables
- A single copy to be shared by all instances of the class
- A static variable can be accessed directly by the class name and doesn’t need any object

Syntax :

```auto
< ***class-name>.<variable-name>***
```

## What is Static Method in Java?

Static method in Java is a method which belongs to the class and not to the object. A static method can access only static data.

- It is a method which belongs to the class and not to the object(instance)
- A static method can access only static data. It can not access non-static data (instance variables)
- A static method can call only other static methods and can not call a non-static method from it.
- A static method can be accessed directly by the class name and doesn’t need any object
- A static method cannot refer to “this” or “super” keywords in anyway

Syntax :

```auto
< ***class-name>.<method-name>***
```

> **Note:** main method is static, since it must be accessible for an application to run, before any instantiation takes place.

Lets learn the nuances of the static keywords by doing some excercises!

**Example: How to call static variables & methods**

**Step 1)** Copy the following code into a editor

```auto
public class Demo{
   public static void main(String args[]){
     Student s1 = new Student();
     s1.showData();
     Student s2 = new Student();
     s2.showData();
     //Student.b++;
     //s1.showData();
  }
}

class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  Student(){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
//public static void increment(){
//a++;
//}

}
```

**Step 2)** Save & Compile the code. Run the code as, **java Demo**.

**Step 3)** Expected output show below

![image](https://onehack.st/uploads/default/original/3X/b/b/bb3dc5ccd9eb5583db34b6c32e25acf63408052a.png)

Following diagram shows, how reference variables & objects are created and static variables are accessed by the different instances.

 ![image](https://onehack.st/uploads/default/original/3X/f/b/fbc2586082737744b73acc505cc85a32f161de99.jpeg)

**Step 4)** It is possible to access a static variable from outside the class using the syntax **ClassName.Variable\_Name**. Uncomment line # 7 & 8 . Save , Compile & Run . Observe the output.

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

```

**Step 5)** Uncomment line 25,26 & 27 . Save , Compile & Run.

`error: non-static variable a cannot be referenced from a static context a++;`

**Step 6)** Error = ? This is because it is not possible to access instance variable " **a**" from java static class method " **increment**".

## **Java Static Block**

The static block is a block of statement inside a Java class that will be executed when a class is first loaded into the JVM

```auto
class Test{
 static {
 //Code goes here
 }
}
```

A **static block helps to initialize the static data members** , just like constructors help to initialize instance members

Following program is the example of java static block.

**Example: How to access static block**

```auto
public class Demo {
 static int a;
 static int b;
 static {
    a = 10;
    b = 20;
 }
 public static void main(String args[]) {

  System.out.println("Value of a = " + a);
  System.out.println("Value of b = " + b);

 	}
}
```

you will get following output of the program.

```
Value of a = 10
Value of b = 20

```

## ENJOY & HAPPY LEARNING SOMETHING BASIC! 👍

---

<div class="post-metadata">

**Author:** ![Majid635](https://onehack.st/user_avatar/onehack.st/majid635/32/24364_2.png) [@Majid635](https://onehack.st/u/Majid635)\
**Post date:** [September 25, 2019, 11:23am UTC](https://onehack.st/t/java-static-method-variable-and-block-with-example-complete-guide/58840/2 "2019-09-25T11:23:43Z")

</div>

Thank you captain @Aina for informative post.  
**Happy Learning!**

---

<div class="post-metadata">

**Author:** ![Xtreme](https://onehack.st/user_avatar/onehack.st/xtreme/32/23142_2.png) [@Xtreme](https://onehack.st/u/Xtreme)\
**Post date:** [September 25, 2019, 11:36am UTC](https://onehack.st/t/java-static-method-variable-and-block-with-example-complete-guide/58840/3 "2019-09-25T11:36:23Z")

</div>

So Awesome Man = SAM

Great, you are amazing.
