What is an instance variable in Java? What is an instance variable in Java? java java

What is an instance variable in Java?


Instance variable is the variable declared inside a class, but outside a method: something like:

class IronMan {    /** These are all instance variables **/    public String realName;    public String[] superPowers;    public int age;    /** Getters and setters here **/}

Now this IronMan Class can be instantiated in another class to use these variables. Something like:

class Avengers {    public static void main(String[] a) {        IronMan ironman = new IronMan();        ironman.realName = "Tony Stark";        // or        ironman.setAge(30);    }}

This is how we use the instance variables. Shameless plug: This example was pulled from this free e-book here here.


An instance variable is a variable that is a member of an instance of a class (i.e., associated with something created with a new), whereas a class variable is a member of the class itself.

Every instance of a class will have its own copy of an instance variable, whereas there is only one of each static (or class) variable, associated with the class itself.

What’s the difference between a class variable and an instance variable?

This test class illustrates the difference:

public class Test {       public static String classVariable = "I am associated with the class";    public String instanceVariable = "I am associated with the instance";        public void setText(String string){        this.instanceVariable = string;    }        public static void setClassText(String string){        classVariable = string;    }        public static void main(String[] args) {        Test test1 = new Test();        Test test2 = new Test();                // Change test1's instance variable        test1.setText("Changed");        System.out.println(test1.instanceVariable); // Prints "Changed"        // test2 is unaffected        System.out.println(test2.instanceVariable); // Prints "I am associated with the instance"                // Change class variable (associated with the class itself)        Test.setClassText("Changed class text");        System.out.println(Test.classVariable); // Prints "Changed class text"                // Can access static fields through an instance, but there still is only one        // (not best practice to access static variables through instance)        System.out.println(test1.classVariable); // Prints "Changed class text"        System.out.println(test2.classVariable); // Prints "Changed class text"    }}