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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈绍坚 中级黑马   /  2015-8-6 00:26  /  219 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于静态static修饰的成员被该类的所有对象所共享的理解!求大神解答!

4 个回复

倒序浏览
被这问题迷惑许久,求教!
回复 使用道具 举报
你可以认为是定义之后在同一个类里面任何的函数(方法)包括构造函数(构造方法)都可以调用它,通俗点讲就是在同一个类里面谁都用调用它, 而且改变它的值的话其他类里面调用它都是改变后的值,我通常喊它叫做全局变量,而我们写在类里面的是局部变量也就是只能在同一个方法里面用,出了这个方法就没了,和FOR循环一样。
回复 使用道具 举报
清楚明白!谢谢大神
回复 使用道具 举报
被static修饰的成员可以被该类的所有对象共享,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制),被static修饰的成员随着类的加载而存在,随着类的退出JVM而消失,生命周期更长
1.static成员变量,可以被所有对象共享,声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共用同一个static变量。静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了
2.static成员方法,可以直接使用类名调用,不需要实例化
声明为static的方法有以下几条限制:
·它们仅能调用其他的static 方法。
·它们只能访问static数据。
·它们不能以任何方式引用this 或super
调用一个静态方法就是“类名.方法名”,一般来说,静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。

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

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

以上,应该比较清楚了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马