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