一、为什么需要静态变量
static String bankName;
- 静态变量可以通过 对象名.变量名 来访问。如 zhangsan.bankName,也可以通过 类名.变量名 访问。比较推荐使用 类名.变量名 访问。非静态变量是不能用 类名.变量名 访问的。
- 静态变量在类被载入时创建,只要类存在,静态变量就存在,不管是否实例化。
二、静态变量的常见应用
-
保存跨对象信息 用静态变量保存登录账号,如果登陆成功,就将账号存入这个静态变量。在聊天界面中,访问这个静态变量就能得到登录的账号。
-
存储对象个数 保存一个类已经实例化的对象个数。如可以将当前存活的人数定义为静态变量,当存活人数不足三人时,屏幕上将进行报警提示。
三、静态函数
- 静态变量和静态函数统称为静态成员。静态函数就是在普通函数的定义前加上static关键字。
- 静态函数可以通过 类名.函数名 来访问,当然,也可以通过 对象名.函数名 来访问。推荐用 类名.函数名 来访问。
- 静态函数调用时,对象还没有创建,因此,静态函数中不能直接访问类中的非静态成员变量和成员函数。当然,也不能使用 this 关键字。
四、静态代码块 构造函数对于每个对象执行一次,对每个对象进行初始化。有没有对所有对象的共同信息进行初始化,并对所有对象,只执行一次的机制呢?这就是静态代码块。
class Customer{
String name;
static String bankName;
static{
bankName = "香港银行";
System.out.println("静态代码块执行");
}
}
public class StaticTest{
public static void main(String[] args) {
Customer zhangsan = new Customer();
Customer lisi = new Customer();
}
}
output
静态代码块执行
当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。