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