现在的位置: 首页 > 综合 > 正文

静态对象和非静态对象的区别

2018年02月15日 ⁄ 综合 ⁄ 共 877字 ⁄ 字号 评论关闭

静态对象 vs非静态对象   
是类共同拥有的  是类独立拥有的
内存空间上是固定的空间在各个附属类里面分配
先分配静态对象的空间后对非静态对象分配空间,即初始化顺序是先静态再非静态

关于静态对象静态方法静态属性

区别:属性VS参数 参数一般是指在方法里临时新建的数值或对象;属性是类声明部分声明的信息。
1、静态对象的数据在程序全局是唯一的,一改都改;如果要处理的东西是整个程序中唯一的,就可以声明成静态对象,类似于C++中的全局变量;另,程序全局范围内,可以有多个某个类的全局变量。但,这并并不是真正的全局变量,static和final共同修饰的成员变量和成员方法,才可简单理解为“全局变量”。
a)对于变量,表示一旦给值就不可修改,且程序全局范围内类名可以访问;
b)对于方法,表示不可覆盖,且程序全局范围内可以通过类名直接访问。
2、非静态对象的数据各是各的,某个类的每个非静态对象之间互不影响,修改其中一个对象或其数据并不影响其余非静态对象。
 3、静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是二者的数据表现和存储方式不一样。 
4、静态变量(包括静态对象和静态的Java中的8中基本变量)在内存中只有一个copy(节省内存),JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,可以类名直接访问(方便),当然也可以通过对象来访问(但这是不推荐的);对于实例变量(即非静态变量),每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个copy,互不影响(灵活)。
5、静态方法和静态变量的好处:
a) 引用方便;对于公用类型的变量,直接用类名.静态方法名 或者
类名.静态变量名 就可  引用并且直接可以修改其属性值,不用getter和setter方法。

b) 保持数据的唯一性;此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。
c) 有效减少多余的浪费。



5、静态方法静态属性的关系
a)静态方法只能调用静态属性,不能调用非静态属性
b)非静态方法可以随意调用静态属性和非静态属性

【上篇】
【下篇】

抱歉!评论已关闭.