黑马程序员技术交流社区
标题:
静态变量与实例变量
[打印本页]
作者:
327037419
时间:
2015-8-31 15:22
标题:
静态变量与实例变量
静态变量与实例变量
1. 顾名思义,实例变量就是实例所属的变量,也就是说实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间。 静态变量则是由static关键字定义的变量,静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用!
2. 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。也就是说静态变量内存共享,无论哪个对象改变了它的值,对其他所有该类对象都有效,而实例变量的值不会随着其他对象值的改变而改变!
总的来说:
1、静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 2、非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。 3、静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是2者的数据表现和存储方式不一样。 4、静态的好处: 引用方便。对于公用类型的变量,直接用 类名.静态方法名 或者 类名.静态变量名就可引用并且直接可以修改其属性值,不用getter和setter方法。 保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。 有效减少多余的浪费
作者:
lishuai881512
时间:
2015-8-31 20:14
很有用啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2