• static 是静态的意思,可以修饰成员变量,表示该变量只在内存中存储一份,可以被共享访问、修改。(比如构造函数和析构函数里加一个计数器静态成员变量,就可以统计当前类下有多少对象)
  • 同一个类中访问静态成员变量,类名可以不写。
  • 推荐使用 类名.静态成员变量 来访问静态成员变量。
  • 工具类的作用:一是方便调用,而是提高了代码复用。
  • 建议将工具类的构造器私有,不让工具类对外产生对象。(工具类不需要对外创建对象)
  • 静态方法只能访问静态成员,不可以直接访问实例成员。(可以间接访问,需要先进性类的实例化)
  • 实例方法可以访问静态的成员,也可以访问实例成员。
  • 静态方法不能出现 this 关键字。
  • 静态代码块:可以在程序加载时进行静态数据的初始化操作(准备内容)
  • 构造代码块(用得少):用来初始化实例资源,和构造器方法差不多。
  • 静态代码块的应用:
    1. 斗地主房间只需要一副牌。
    2. 定义一个静态的 ArrayList 集合存储54张牌对象,静态的集合只会加载一份。
    3. 在启动游戏房间前,应该将54张牌初始化好
    4. 当系统启动的同时需要准备好54张牌数据,此时可以用静态代码块完成。
  • 两种情况下可以使用静态方法:
    • 方法不需要访问对象状态,因为它需要的所有参数都通过显式参数提供。
    • 方法只需要访问累的静态字段。
  • 类的初始化顺序:
    1. 静态代码块
    2. 代码块
    3. 构造器
  • 静态变量和非静态变量的区别:
    • 静态变量一个类只有一份,被所有类的实例对象共享。非静态变量是局部变量,一个实例各有一份。
    • 静态变量可以通过 类名.静态变量名 的方式调用。
    • 静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;而非静态变量需要被实例化后才会分配内存。