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