在实际软件开发过程中,有的时候希望无论是否产生了对象,或是产生了多少对象,某些特定的数据在内存中只有一份,JAVA中通过static关键字来解决这个问题。
在类内使用关键字static修饰的成员变量和成员方法分别称为静态变量和静态方法,也称为类变量和类方法,而没有static修饰的变量和成员方法称为对象变量和对象方法。
一、静态变量
静态变量的特点是它不是属于某个对象,而是属于整个类的,它们在类被载入时就被创建,只要类存在,static变量就存在,因此静态变量不是保存在某个对象的存储单元中,而是保存在类的公共内存单元中,任何一个类的对象都可以访问、修改它、静态变量一旦被某个对象修改后,则保存修改后的值,直到下次被修改为止。因此,静态变量是共享的。静态变量定义规则如下:
static 类型 变量名;
静态变量可以通过“类名.成员名”的方式直接访问,也可以先创建对象,通过“对象名.成员名”的方式进行访问(不建议)。
二、静态方法
静态方法与静态变量类似,同样是属于类的,调用方式也与静态变量雷同,不再介绍。静态方法在使用时需要注意以下几点:
- 在创建对象时,由于非静态方法是属于对象的,所以在对象占用的内存中又该方法的代码。而静态方法是属于整个类的,因此在对象占有的内存中没有该方法。
- 在静态方法里只能直接调用类中的其它静态成员。
- 静态方法不能以任何形式引用this和super关键字。