静态变量和静态函数

216 阅读2分钟

一、为什么需要静态变量

image.png

static String bankName;

image.png

  • 静态变量可以通过 对象名.变量名 来访问。如 zhangsan.bankName,也可以通过 类名.变量名 访问。比较推荐使用 类名.变量名 访问。非静态变量是不能用 类名.变量名 访问的。
  • 静态变量在类被载入时创建,只要类存在,静态变量就存在,不管是否实例化。

二、静态变量的常见应用

  1. 保存跨对象信息 用静态变量保存登录账号,如果登陆成功,就将账号存入这个静态变量。在聊天界面中,访问这个静态变量就能得到登录的账号。

  2. 存储对象个数 保存一个类已经实例化的对象个数。如可以将当前存活的人数定义为静态变量,当存活人数不足三人时,屏幕上将进行报警提示。

三、静态函数

  • 静态变量和静态函数统称为静态成员。静态函数就是在普通函数的定义前加上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
静态代码块执行

当类被载入时,静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。