静态对象和非静态对象的区别
2012-06-05 15:16
162 查看
静态对象 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)非静态方法可以随意调用静态属性和非静态属性
是类共同拥有的 是类独立拥有的
内存空间上是固定的空间在各个附属类里面分配
先分配静态对象的空间后对非静态对象分配空间,即初始化顺序是先静态再非静态
关于静态对象、静态方法、静态属性
区别:属性VS参数 参数一般是指在方法里临时新建的数值或对象;属性是类声明部分声明的信息。
1、静态对象的数据在程序全局是唯一的,一改都改;如果要处理的东西是整个程序中唯一的,就可以声明成静态对象,类似于C++中的全局变量;另,程序全局范围内,可以有多个某个类的全局变量。但,这并并不是真正的全局变量,static和final共同修饰的成员变量和成员方法,才可简单理解为“全局变量”。
a)对于变量,表示一旦给值就不可修改,且程序全局范围内类名可以访问;
b)对于方法,表示不可覆盖,且程序全局范围内可以通过类名直接访问。
2、非静态对象的数据各是各的,某个类的每个非静态对象之间互不影响,修改其中一个对象或其数据并不影响其余非静态对象。
3、静态对象和非静态对象都是对象,是对象都是要实例化的。不同之处就是二者的数据表现和存储方式不一样。
4、静态变量(包括静态对象和静态的Java中的8中基本变量)在内存中只有一个copy(节省内存),JVM只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配,可以类名直接访问(方便),当然也可以通过对象来访问(但这是不推荐的);对于实例变量(即非静态变量),每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个copy,互不影响(灵活)。
5、静态方法和静态变量的好处:
a) 引用方便;对于公用类型的变量,直接用类名.静态方法名 或者
类名.静态变量名 就可 引用并且直接可以修改其属性值,不用getter和setter方法。
b) 保持数据的唯一性;此数据全局都是唯一的,修改他的任何一处地方,在程序所有使用到的地方都将会体现到这些数据的修改。
c) 有效减少多余的浪费。
5、静态方法与静态属性的关系
a)静态方法只能调用静态属性,不能调用非静态属性
b)非静态方法可以随意调用静态属性和非静态属性
相关文章推荐
- Java静态对象和非静态对象有什么区别??
- 什么是静态代码块?java中如何使用空参构造方法自动生成不同名字的对象,使用非静态的属性和静态属性有什么区别,原因是什么?如何理解static关键字
- 静态对象和非静态对象的区别
- Java静态对象和非静态对象有什么区别??
- jsp本质,jsp静态导入与动态导入区别,jsp九个内置对象,jsp传值
- 静态成员及非静态成员 区别
- 静态与非静态的区别
- 类的静态成员和非静态成员的区别
- 静态与非静态区别
- 对象的动态和静态构造创建的区别
- 静态成员和非静态成员的区别?
- 黑马程序员:面向对象中的静态和非静态
- 代码块的解释,构造代码块,静态代码块,静态常量和常量以及静态成员变量和对象成员变量的区别
- 静态与非静态的区别
- 同步静态和非静态同步的区别
- 对象的动态和静态构造创建的区别
- C++静态成员和非静态成员的区别
- 静态和非静态成员,函数之间到底区别在哪里
- 静态和非静态的区别?
- 静态成员函数和非静态成员函数的区别?