黑马程序员技术交流社区

标题: 我对static的理解 [打印本页]

作者: codersun    时间: 2015-8-6 01:05
标题: 我对static的理解
被static修饰的成员可以被该类的所有对象共享,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制),被static修饰的成员随着类的加载而存在,随着类的退出JVM而消失,生命周期更长
1.static成员变量,可以被所有对象共享,声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了
2.static成员方法,可以直接使用类名调用,不需要实例化
声明为static的方法有以下几条限制:
·它们仅能调用其他的static 方法。
·它们只能访问static数据。
·它们不能以任何方式引用this 或super
调用一个静态方法就是“类名.方法名”,一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。

另外static还可以修饰代码块,为类的实例化做初始化;
修饰类(内部类),可以被外部类直接调用方法和成员,不需要实例化;

所有的static修饰的成员均具有较高的加载优先级,会优先非static成员加载。


作者: kissfrd    时间: 2015-8-6 01:40
总结的真好,感谢分享
作者: 李峥    时间: 2015-8-6 07:17
good~~~~~~~
作者: ITHM明    时间: 2015-8-6 07:44
感谢分享!
作者: 嘉嘉    时间: 2015-8-6 17:40
总结的很全面,辛苦
作者: boboyuwu    时间: 2015-8-6 19:05
不错不错
作者: 千山万水    时间: 2015-8-6 20:01
行  、、 、 、
作者: 塞巴斯的小夏尔    时间: 2015-8-6 21:09
赞赞赞赞赞!
作者: 王竹根    时间: 2015-8-6 21:22
那么对于final来说是个啥情况呢
作者: wx_HWRW5aF7    时间: 2015-8-6 21:35
不错 赞一个
作者: 薛瑞宾    时间: 2015-8-6 21:42
总结很好,赞一个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2