Java -What is an instance variable? [closed]

By | July 12, 2018
Questions:

My assignment is to make a program with an instance variable, a String, that should be inputed by user. But I don’t even know what an instance variable is. What is an instance variable? How do I create one? What does it do?

Answers:

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 / setters here **/
}

Now this IronMan Class can be instantiated in other 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. More fun stuffs on java basics here.

Questions:
Answers:

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 1 of each static (or class) variable, associated with the class itself.

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 1
        //(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"
    }
}

Leave a Reply

Your email address will not be published. Required fields are marked *