一、 使用

修饰符 static type ParameterNam

二、细节

  1. 什么是类变量

    1. 类变量也叫静态变量/静态属性,是该类的==所有对象实例共享==的变量,任何一个该类的对象实例去访问它时,取到的都是相同的值;同样任何一个该类的对象去修改它时,修改的也是同一个变量。
  2. 如何定义

    1. 访问修饰符 static 数据类型 变量名
    2. static 访问修饰符 数据类型 变量名。
  3. 如何访问类变量

    1. 类名.类变量名 ===> 推荐
    2. or
    3. 对象名.类变量名
    4. ==访问时需要遵守访问修饰符==
  4. 类变量在什么时候生成

    1. 类变量在类被加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量

    2. 类变量的生命周期是随类的加载开始,随类消亡

    3. 案例

      1. public class visitStatic {
            public static void main(String[] args) {
                System.out.println(A.name);
            }
        }
        
        class A{
            public static String name="ni hao";
        }
        

什么时候加载类信息.

  1. 什么时候需要用类变量
    1. 当我们需要让某个类的所有对象都共享一个变量时。
  2. 类变量与实例变量(普通属性)区别
    1. 类变量是该类的所有对象共享的,二实例变量(普通成员变量/非静态成员变量))是每个对象独享的’=’
    2. 普通属性不能通过 类名.变量名读取

image-20221026213048223

二、静态变量/ 类变量储存

  1. 版本划分

    1. jdk7以前在方法区中
    2. jdk7以后,静态域储存于定义类型的Class对象中,Class对象如同堆中其他对象一样存在于GO堆中。
      1. 放在class 实例的尾部,class 变量存在于堆中。
    3. image-20221026210945215
    4. image-20221026212523430
  2. 特定

    1. 所有对象变量共享 ——> 同一个类生成的所有对象。
    2. 在类加载的时候就生成