1. 类变量内存布局
(1)在JDK8以前static变量是在方法区里面创建,在JDK8以后,是在堆里面类对应的class对象的最后。
(2)static变量是同一个类所有对象共享的。
(3)static变量在类加载时就生成了。
2. 基本定义
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值。同样任何一个该类的对象去修改它时,修改的也是同一个变量。
3. 基本语法
(1)定义语法
①访问修饰符 static 数据类型 变量名; (推荐)
②static 访问修饰符 数据类型 变量名;
例:
(2)访问类变量(依然遵守访问权限)
①类名.类变量名 (推荐)
②对象名.类变量名
例:
4. 注意事项和使用细节
(1)什么时候需要使用类变量
当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量)。比如:定义一个学生类,统计所有学生共交多少钱,定义一个钱的静态变量。
(2)类变量与实例变量(普通属性)的区别
类变量是该类的所有对象共享的,而实例变量是每个对象独享的。
(3)加上static称为 类变量或静态变量,否则称为 实例变量/普通属性/普通成员变量/非静态变量。
(4)类变量的调用同样需要遵循 访问修饰符的访问权限和范围。
(5)类变量是在类加载时就初始化了,也就是,即使没有创建对象,但只要类加载了,就可以使用类变量。
(6)类变量的生命周期是随类的加载开始,随类的消亡而摧毁。