×
☰ See All Chapters

Java Variables

A variable is used to store information like text, numbers, arrays, date etc… When a variable is declared, it can be retrieved and manipulated over and over again in your code.  The assignment operator (=) used to assign value to a variable.  Java variables are also called as fields, field variables or just variables or data members. There are three kinds of variables in Java:

    1. Local variable 

    2. Instance variable 

    3. class/static variable 

Local Variable

  • Local variables are declared in methods, constructors, or blocks. 

  • Local variables are created when the method, constructor or block is entered and the variable will be destroyed once it exits the method, constructor or block. 

  • Access modifiers cannot be used for local variables. 

  • Local variables are visible only within the declared method, constructor or block. 

  • Local variables are implemented at stack level internally. 

  • There is no default value for local variables so local variables should be declared and an initial value should be assigned before the first use. 

  • Declaration and initialization of local variables can be done separately as 

int num;

num = 100;

 

java-variables-0
 

Instance variables

  • Instance variables are declared in a class, but outside a method, constructor or any block. 

  • When a space is allocated for an object in the heap, a slot for each instance variable value is created. 

  • Instance variables are created when an object is created with the use of the keyword 'new' and destroyed when the object is destroyed. 

  • Instance variables hold values that must be referenced by more than one method, constructor or block, or essential parts of an object's state that must be present throughout the class. 

  • Instance variables can be declared in class level before or after use. 

  • Access modifiers can be given for instance variables. 

  • The instance variables are visible for all methods, constructors and block in the class. Normally, it is recommended to make these variables private (access level). However visibility for subclasses can be given for these variables with the use of access modifiers. 

  • Instance variables have default values. For numbers the default value is 0, for Booleans it is false and for object references it is null.  

  • Values can be assigned during the declaration or within the constructor or within instance blocks. Declaration and initialization of instance variables cannot be done separately as below: 

int num;

num = 100;

 

  • Instance variables can be accessed directly by calling the variable name inside the class. However within static methods and different class ( when instance variables are given accessibility) should be called using the fully qualified name as  

objectReference.variableName                                                 

  • Instance variables are non-static variables, they cannot be accessed inside any static context (static methods, static blocks )  , but by creating object and by using Dot operator we access them inside static context. 

Example :

class LocalVariable {

        String name; // name is Instance variables

        int num; // num is Instance variables

 

        void meth() {

                System.out.println("Inside meth");

        }

}

 

class LocalVariableDemo {

        public static void main(String[] args) {

                LocalVariable x = new LocalVariable();

                x.name = "Manu Manjunatha";

                x.num = 100;

                System.out.println("Name:" + x.name);

                System.out.println("Number:" + x.num);

                x.meth();

        }

}

Class/static variables

  • Class variables also known as static variables are declared with the static keyword in a class, but outside a method, constructor or a block. 

  • There would only be one copy of each class variable per class, regardless number of objects created from it. 

class Counter {

        static int count;

        void counting() {

                ++count;

                System.out.println(count);

        }

}

 

class CounterDemo {

        public static void main(String[] args) {

                Counter.count = 0;// Access with class name

                Counter c1 = new Counter();

                c1.counting();

                Counter c2 = new Counter();

                c2.counting();

        }

}

 

   Output:

1

2

  • Static variables are stored in static memory.  

  • Static variables are created when the program starts and destroyed when the program stops. 

  • Visibility is similar to instance variables. However, most static variables are declared public since they must be available for users of the class. 

  • Default values are same as instance variables. For numbers, the default value is 0; for Booleans, it is false; and for object references, it is null.  

  • Values can be assigned during the declaration or within the constructor or in other classes or in methods. Additionally values can be assigned in special static initializer blocks. Declaration and initialization of static variables cannot be done separately as below: 

static int num;

num = 100;

 

  • If static variables are declared final, then they must be initialized while declaring. 

  • For outside the class, Static variables can be accessed by calling with the class name as 

className.variableName

  • For inside the class, Static variables can be accessed with their name itself. 

  • When declaring class variables as public static final, then variables names (constants) are all in upper case. If the static variables are not public and final the naming syntax is the same as instance and local variables. 

 

java-variables-1
 

Accessing static variables outside the class

package com.java4coding;

 

public class Demo {

        public static void main(String[] args) {

                Counter.count = 0;// Access with class name

                Counter.counting();

                Counter.counting();

        }

}

 

class Counter {

        static int count;

        static void counting() {

                ++count;

                System.out.println(count);

        }

}

 


All Chapters
Author