Class variables, Instance Variables and Local variables in Java

Based on the scope in which the variable is declared, we can classify variables as Class variables, Instance Variables and Local variables.

 

Class variables (or static variables)

Class variables (or static variables) are declared within a class and outside all methods using the static keyword.

Example: Static variable

class MyClass{

static int myVar;

}

 

Instance variables

Instance variables are non-static variables and are defined in a class outside any methods.

Example: Instance variable

class MyClass {

int myVar;

}

 

Local variables

Local variables are variables defined within methods or blocks in a class. Local variables are declared the same way as instance variables, but are declared within a method or block.

Unlike static or instance variables, local variables are not initialized by JVM. Hence a local variable must be initialized before you try to use it. Compiler will still complain if you initialize it conditionally (e.g. inside an if without else).

 

Example (special case): Local variable compilation failure

String local; 
if( n > 0 ) local = "good"; 
if(n <= 0) local = "bad";
System.out.println( s1+" = " + local ); 
}
}

Compilation will fail because the second 'if' is another statement and not part of the first 'if', even though it does get initialized always.

 

Default initialization of variables

A member variable is given a default value according to its type when not given a value explicitely.

Local variables are not initialized with default values. Hence you can use them only after initializing.

 

Important points

Class variables (or static variables)

  1. Class variables (or static variables) are declared within a class and outside all methods using the static keyword.

  2. They belong to class and are common to all objects of that class.

  3. They can be called using class name as  MyClass.myStaticVar or using any of the object instances as myObjOfMyClass.myStaticVar.

 

Instance variables

  1. Instance variables are non-static variables and are defined in a class outside any methods.

  2. These variables are specific to each instance (object) of the class. 

  3. They can be called using any of the object instances as myObjOfMyClass.myInsVar.

 

Local variables

  1. Local variables are local to methods or blocks in a class. Their scope is limited to the block or method they are declared and die as soon as the block is exited.

  2. A local variable must be initialized before you try to use it, else compiler will complain. Compiler will still complain if you initialize it conditionally (e.g. inside an if without else).

  3. We can declare a local variable with the same name as an instance or static variable declared in a class and when accessed from within the local block (a method), local variable will take precedence over others. However, we cannot redeclare a local variable again inside an inner block where it is already declared and is visible. 

  4. Local variables are always thread safe as a different copy of local variable will be created per thread.  

Search the Web

Custom Search

Searches whole web. Use the search in the right sidebar to search only within javajee.com!!!