Java的static
说明
在Java中引入static,在编译时将变量存储在程序的静态存储区而非堆栈空间,并且静态数据成员按定义出现的先后顺序依次初始化。
使用static关键字的优势
- 节省内存空间。static变量对所有的对象是共有的,并且仅存储在一处。
- static变量可以更新。当对static变量进行更新时,所有对象在读取该变量时均为更新后的值。
static常用与修饰变量和方法
- static修饰的变量称为类变量,也称为静态变量;非static修饰的变量称为实例变量。他们的区别是:类变量属于类,通过类名.属性名使用;实例变量属于该类的一个对象,常通过对象名.变量名调用。
- static修饰的方法称为类方法,也称为静态方法;非static修饰的方法常称为实例方法。他们的区别是:类方法属于整个类,常通过类名.方法名调用;实例方法属于该类的一个对象,常通过对象名.方法名调用。
以上结论的前提是在访问控制权限允许的情况下。当然,对于静态变量和方法,也可以通过该类的对象名.变量名或方法名调用。
注意:
- static{}方法称为静态游离块。静态游离块总是在程序的首次执行时被调用且仅执行一次,常用于初始化程序中的数据(参数,类,文件等)。静态游离块于所在的位置无关,但不能位于方法和构造器中。
- static修饰的静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。
- 静态方法不能被子类的静态方法覆盖。
- 对该类的多个对象来说,静态变量仅分配一次内存,供所有对象共用。类对象类变量在每次被实例化时对象时均会进行一个自身的拷贝,即分配新的内存空间。