被static关键字修饰的成员具有以下特点:
1、随着类的加载而加载;
2、被所有对象所共享;
3、优先于对象存在;
4、可以直接通过类名来调用。
static用于修饰成员(成员变量和成员方法),也可以形成静态代码块。
1、静态成员变量
用static修饰的变量称之为静态成员变量,而没有用static修饰的称之为实例变量。
静态变量与实例变量的区别:
a、存放位置:
静态变量随着类的加载而存在于方法区中;
实例变量随着对象的建立而存在于堆内存中。
b、生命周期:
静态变量的生命周期最长,随着类的加载而加载,随着类的消失而消失。
实例变量的生命周期随着对象的建立而加载,随着对象的消失而消失。
2、静态成员方法
静态的方法可以直接被类调用,也可以通过创建对象来调用。
静态方法只能访问静态成员变量,静态方法优先于对象存在所以静态方法中不能使用this,super关键字。
如果为了方便方法直接被类调用,可以方法定义成静态。
静态方法是类内部的一类特殊方法,只有在需要时才将对应的方法声明成静态的,
一个类内部的方法一般都是非静态的。
3、静态代码块
随着类的加载而加载,而且只执行一次,优先于主函数,用于给类进行初始化。
运行结果:lao
lao::25
lao2::25
什么时候使用static关键字
1、当对象中出现共享数据时
2、对象中的特有数据要定义成非静态存在于堆内存中
3、当功能内部没有访问到非静态数据时