中国第八军团
新手报道 :
新兵宿舍
求助问答 :
悬赏问答
技术探讨 :
网络安全
敲敲代码 :
编程开发
资源分享 :
资源下载
论坛生活 :
军团茶座
站务管理 :
论坛版务
主题:1690 回帖:16933 会员:1264 在线:1
发新帖

【java】面向对象静态static的相关

blackflame 2017-3-9 485


面向对象静态static的相关
Static特点:
1、
随着类的加载而加载。a)
也就是说:静态类会随着类的消失而消失。说明它的生命周期最长。2、
优先于对象的存在。a)
明确一点:静态是先存在的。对象是后存在的。3、
被所有对象所共享4、
可以直接被类名调用
实例变量和类变量的区别:1、
存在位置:类变量(静态变量)随着类的加载而存在于方法区中。实例变量(非静态成员变量)随着对象的建立而存在于堆内存中。2、
生命周期:类变量生命周期最长,随着类的消失而消失实例变量随着对象的消失而消失静态什么时候定义?
定义静态变量是因为它们是需要共享的资源. 如果在把一个name也定义成静态,那么对象消亡,它不消亡,这样占内存。

静态的调用:
static修饰的方法,既可通过类来调用,也可通过实例来调用,但是不能使用this引用。 静态使用注意事项: 1、静态方法只能访问静态 成员,因为对象和实例变量(成员变量)这时候很可能还没创建。 2、静态方法中不可以定义this,supper关键字
静态有利有弊利处:
对对象的共享数据进行单独空间的存储,节省空间,没有必要对每一个对象都开辟一个空间。弊处:
生命周期过长,访问出现局限性,。(静态虽好,只能访问静态)
对象的初始化过程Person p= new Person(“ddd”);
这句话做了什么?
1、
因为new用到了person.calss 所以会先找到Person.class文件并加载到内存中。2、
执行该类中的static代码块,如果有的话,给person.class类进行初始化。3、
在堆内中开辟空间,分配内存地址。4、
在堆内存中建立对象的特有属性,并进行默认初始化。5、
对属性进行显示初始化。6、
对对象进行构造代码块初始化。7、
对对象进行对应的构造函数初始化。8、
将内存地址赋予栈中内存的P变量。



最新回复 (1)
程小诺 2017-3-18
1
黑白相间的。。。
返回



©1999-2017 第八军团
Time: 0.137, SQL: 15