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?
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. Shameless plug: Example pulled from this free ebook 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 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"
}
}
来源:https://stackoverflow.com/questions/16686488/java-what-is-an-instance-variable