前言
使用static修饰符修饰的属性为静态变量(类变量),方法称为静态方法,统称为静态成员,归整个类所有。static修饰的变量不需要依赖对象访问。
一、调用方法
方法 = 类名.静态成员
注意:
- static修饰的成员变量和成员方法,从属于类。
- 普通变量和方法从属于对象
- 静态方法不能调用非静态成员
二、静态变量
类的成员变量可分俩种
- 静态变量(或称为类变量)
- 实例变量,没有被static修饰过的变量
区别:
(1)静态变量
运行时,Java 虚拟机只为静态变量分配一次内存,在加载类的过程中完成静态变量的内存分配。
在类的内部,可以在任何方法内直接访问静态变量。
在其他类中,可以通过类名访问该类中的静态变量。
(2)实例变量
每创建一个实例,Java 虚拟机就会为实例变量分配一次内存。
在类的内部,可以在非静态方法中直接访问实例变量。
在本类的静态方法或其他类中则需要通过类的实例对象进行访问。
静态变量在类中的作用如下:
- 静态变量可以被类的所有实例共享,因此静态变量可以作为实例之间的共享数据,增加实例之间的交互性。
- 如果类的所有实例都包含一个相同的常量属性,则可以把这个属性定义为静态常量类型,从而节省内存空间。例如,在类中定义一个静态常量 PI。
三、静态方法
和成员变量类似,成员方法也可以分为以下两种:
- 静态方法(或称为类方法),指被 static 修饰的成员方法。
- 实例方法,指没有被 static 修饰的成员方法。
静态方法与实例方法的区别如下:
- 静态方法不需要通过它所属的类的任何实例就可以被调用,因此在静态方法中不能使用 this 关键字,也不能直接访问所属类的实例变量和实例方法,但是可以直接访问所属类的静态变量和静态方法。另外,和 this 关键字一样,super 关键字也与类的特定实例相关,所以在静态方法中也不能使用 super 关键字。
- 在实例方法中可以直接访问所属类的静态变量、静态方法、实例变量和实例方法。