1]What is the difference between an instance member variable and a static membervariable?
Get answer to your question and much more
2]Static member variables are declared inside the class declaration. Where are staticmember variables defined?
Get answer to your question and much more
3]Does a static member variable come into existence in memory before, at the sametime as, or after any instances of its class?
Get answer to your question and much more
4]What limitation does a static member function have?
Get answer to your question and much more
5]What action is possible with a static member function that isn’t possible with aninstance member function?
Get answer to your question and much more
6]If class X declares function f as a friend, does function f become a member of class X ?
Get answer to your question and much more
A static variable is shared by all instances of the class, while an instance variable is unique to each instance of the class.
A static variable's memory is allocated at compile time, they are loaded at load time and initialized at class initialization time. In the case of an instance variable all of the above is done at run time.
Here's a helpful example:
An instance variable is one per object: every object has its own copy of its instance variable.
public class Test{
int x = 5;
}
Test t1 = new Test[];
Test t2 = new Test[];
Both t1 and t2 will have their own copy of x.
A static variable is one per class: every object of that class shares the same static variable.
public class Test{
public static int x = 5;
}
Test t1 = new Test[];
Test t2 = new Test[];
Both t1 and t2 will share the same x.
View Discussion
Improve Article
Save Article
View Discussion
Improve Article
Save Article
Instance Variable: It is basically a class variable without a static modifier and is usually shared by all class instances. Across different objects, these variables can have different values. They are tied to a particular object instance of the class, therefore, the contents of an instance variable are totally independent of one object instance to others.
Example:
class Taxes { int count; /*...*/ }
Class Variable: It is basically a static variable that can be declared anywhere at class level with static. Across different objects, these variables can have only one value. These variables are not tied to any particular object of the class, therefore, can share across all objects of the class.
Example:
class Taxes { static int count; /*...*/ }
Tabular difference between Instance and Class variable:
It is a variable whose value is instance-specific and now shared among instances. | It is a variable that defines a specific attribute or property for a class. |
These variables cannot be shared between classes. Instead, they only belong to one specific class. | These variables can be shared between class and its subclasses. |
It usually reserves memory for data that the class needs. | It usually maintains a single shared value for all instances of class even if no instance object of the class exists. |
It is generally created when an instance of the class is created. | It is generally created when the program begins to execute. |
It normally retains values as long as the object exists. | It normally retains values until the program terminates. |
It has many copies so every object has its own personal copy of the instance variable. | It has only one copy of the class variable so it is shared among different objects of the class. |
It can be accessed directly by calling variable names inside the class. | It can be accessed by calling with the class name. |
These variables are declared without using the static keyword. | These variables are declared using the keyword static. |
Changes that are made to these variables through one object will not reflect in another object. | Changes that are made to these variables through one object will reflect in another object. |