A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 327037419 中级黑马   /  2015-8-31 15:22  /  309 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态变量与实例变量
1. 顾名思义,实例变量就是实例所属的变量,也就是说实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间。 静态变量则是由static关键字定义的变量,静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用!

2. 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。也就是说静态变量内存共享,无论哪个对象改变了它的值,对其他所有该类对象都有效,而实例变量的值不会随着其他对象值的改变而改变!
总的来说:

1、静态对象的数据在全局是唯一的,一改都改。如果你想要处理的东西是整个程序中唯一的,弄成静态是个好方法。 2、非静态的东西你修改以后只是修改了他自己的数据,但是不会影响其他同类对象的数据。 3、静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是2者的数据表现和存储方式不一样。 4、静态的好处: 引用方便。对于公用类型的变量,直接用 类名.静态方法名  或者  类名.静态变量名就可引用并且直接可以修改其属性值,不用getter和setter方法。 保持数据的唯一性。此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。 有效减少多余的浪费

1 个回复

倒序浏览
很有用啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马