静态变量(类变量):
独立存在的变量,只是位置放在某个类下,可以直接类名加点调用静态变量名使用。并且是项目或程序一启动运行到该类时就直接常驻内存。不需要初始化类再调用该变量。用关键字声明。静态方法也是同样,可以直接调用。
静态变量(类变量)具备以下特点:
1.随着类的加载而加载
2.优先于对象存在
3.被所有对象所共享
4.可以直接被类名调用
实例变量:
就是相当于该类的属性,需要先初始化该类,就是new 该类后,才可以调用。但是该类未被再次使用,被垃圾回收器回收后,该实例也将不存在了,就是不在内存中了。
两者的区别如下:
1.存储区域不同:
类变量随着类的加载而存储于方法区的静态存储区中。
实例变量随着对象的建立而存储于堆内存中
这也是为什么实例方法和变量需要在实例创建后才能由实例引用,而类变量随着类的加载就可以引用。
下图为实例变量的存储结构示意图:
2.静态变量与类相关,实例变量则与实例相关
3.内存分配方式不同。
4.生命周期不同。
类变量生命周期最长,随着类的消失而消失。
实例变量生命周期随着对象的消失而消失。