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) uses the static keyword. Class variables (or static variables) are declared within a class and outside all methods

Example: Static variable

class MyClass{

static int myVar;

}

 

Instance variables

Instance variables (non-static) are specific to each object 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, except for the fact that they are declared within a method or block.

Unlike static or instance variables, local variables are not initialized by JVM with a default value. Hence, a local variable must be initialized before you try to use it. Compiler will also 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.  

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)