类变量
基本介绍
引出关键字:static
又名:静态变量,静态字段,类字段(字段又名属性,成员方法),类属性
static 字段是一个供该同一个类的所有对象共享的变量
(1)任何一个该类的对象去访问它时,取到的都是相同的值
(2)同样任何一个该类的对象去修改它时,修改的也是同一个变量
(3)随着类的加载而创建
⭐ 创建机制
(1)第一种说法(JDK8 以前的版本)
类加载的时候会在方法区创建一块空间(称为静态域),static 修饰的变量存储在其中
第二种说法(JDK8 以后的版本)
staic 变量保存在堆空间中
类加载时候的时候通过反射机制加载一个Class 对象,static 变量保存在 Class 实例的尾部

类变量的定义
(1)访问修饰符 static 变量类型 变量名
java
public static int age;(2) static 访问修饰符 变量类型 变量名
java
static public int age;类变量的访问
两种方式
(1)类名 . 类变量名
(2)对象名 . 类变量名
注意事项
1. 由于类变量供同一个类的所有对象共享,因此可以通过类名访问
2. 静态变量的访问修饰符的访问权限和范围 和普通类属性是一样的
代码示例
统计创建对象的个数
java
public class practise01 {
public static void main(String[] args) {
statictest statictest1 = new statictest();
statictest statictest2 = new statictest();
statictest statictest3 = new statictest();
int tot = statictest.totalobjectnum();
System.out.println("创建statictest类对象的总个数是:" + tot);
}
}
class statictest{
static int objectnum;
public statictest(){
statictest.objectnum ++;
}
public static int totalobjectnum(){
return objectnum;
}
}
// 输出结果
创建statictest类对象的总个数是:3代码分析
(1) 创建类变量 objectnum 用于统计创建该类对象的个数
(2) 在构造器中加入逻辑,只要创建对象,类变量 objectnum 的值就自增一
(3) 使用 totalobjectnum 方法返回该类对象创建的个数
使用细节
(1)什么时候需要用类变量?
当我们需要让某个类的所有对象共享一个变量时,就可以考虑使用类变量(静态变量)
(2)区别类变量与实例变量(普通属性)
1. 类变量是该类的所有对象共享的
2. 实例变量是每个对象独享的。
(3)类变量可以通过类名.类变量来访问;但实例变量只能通过对象.类变量来访问
⭐ 推荐使用:类名 . 类变量
