Java关键字static小结

来源:互联网 发布:python for循环遍历 编辑:程序博客网 时间:2024/04/30 03:59

static是一个特殊的关键字,可用于修饰成员变量,方法,初始化块,内部类(包括接口,枚举)。


static修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因此通常把static修饰的成员变量和方法也称为类变量,类方法。不使用static修饰的则属于该类的某个实例,不属于该类,通常称为实例变量,实例方法。


由于static英文翻译是静态的意思,因此有时也把static修饰的成员变量和方法称为静态变量和静态方法,但这种称呼无法说明static的真正作用。

static的真正作用就是用来区分成员(变量,方法,实例,内部类)是属于类本身还是类实例。


static修饰的成员不能访问没有static修饰的成员。


类变量属于整个类,当系统第一次准备该类时,系统就会为该类变量分配内存空间,类变量开始生效,直到类被卸载,该类的类变量所占的内存才被系统的垃圾回收机制回收。类变量生存范围几乎等同于该类的生存范围。当类初始化完成之后,类变量也被初始化完成。


类变量既可以通过类来访问,也可以通过类的对象来访问。但通过类的对象来访问类变量时,实际上不是访问对象所拥有的变量,因为当系统创建该类的对象时,系统不会再为类变量分配内存,也不会再次对类进行初始化,即对象根本不拥有对应的类变量。当用实例来访问类成员时,实际是委托该类来访问类成员


例如:

public class StaticTest {private static void test(){System.out.println("static 修饰的类方法");}public static void main(String[] args){StaticTest test=null;test.test();}}
通常情况下,null表明实例并不存在,用null访问成员将会引发异常,

但本示例编译运行正常,程序打印出

static 修饰的类方法


表明null对象可以访问她所属的类成员即实例通过委托类来访问类成员。







1 0