类变量也叫静态变量,也就是在变量前加了static的变量;
实例变量也叫对象变量,即没加static的变量;
- 静态变量(类变量)具备以下特点:
1.随着类的加载而加载
2.优先于对象存在
3.被所有对象所共享
4.可以直接被类名调用 - 类变量和实例变量的区别是:
1,存放位置。
类变量随着类的加载而存在于方法区中。
实例变量随着对象的建立而存在于堆内存中。
2,生命周期:
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。
3,类变量和实例变量的区别在于:类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则属对象私有,某一个对象将其值改变,不影响其他对象;
例;
public class A{
static int a = 0;//类变量
private int b = 0;//实力变量}
public class B{
public void main (String] args){
A a1 = new A();
A a2 = new A();
a1.a = 3;//等同于A.a = 3;
a1.b = 4;
System.out.println(a2.a);//结果为3
//类变量是针对所有对象的,所以a1改变a, a2的a也改变
System.out.println(a2.b);//结果为0
//实例只改变自身的,所以a1对象的b改变,不影响对象a2的b变量
}
- 类变量又叫静态成员变量,它不需要创建对象就可以已经在内存中存在了。
类就像一份说明书,说明这种类的实例对象的规格。而在创建实例对象的时候,内存中会为每一个实例对象的每一个非静态成员变量开辟一段内存空间,用来存储这个对象所有的非静态成员变量值。即使两个不同的实例对象是属于同一个class类,但是它们的同名非静态成员变量在内存中占用的空间是不同的。
而静态成员变量也就是类变量不同。所有的实例对象都共用一个类变量,内存中只有一处空间是放这个类变量值的。因此,如果一个对象把类变量值改了,另外—个对象再取类变量值就是改过之后的了。