Java静态变量使用实例
阅读原文时间:2021年04月20日阅读:1

前言

记住三点:
一、Java 中被 static 修饰的成员称为静态成员或类成员
二、它属于整个类所有,而不是某个对象所有,即被类的所有对象共享。
三、静态成员可以使用类名直接访问,也可以使用对象名进行访问

1.贴一个统计字符串的小程序,举例说明如何使用

public class CalcStr {
    private static int num = 0;

    public static void getStatics(String str) {
        if (!str.equals("calc") && !str.equals("reset")) {   //统计输入字符串数量
            if (str.length() > 0) {
                num += 1;
            }
        }

        if (str.equals("calc")) {  //打印已统计的字符串数量
            System.out.println("排除无效输入,总共输入字符串数量:"+num);
        }

        if (str.equals("reset")) {    //复位,重新统计
            num = 0;
        }
    }
}

2.写一个从键盘循环输入的测试代码

import java.util.Scanner;

public class InFromBoard {
    public static void main(String[] o) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        while (!str.equals("end")) {
            System.out.println("输入字符串为:"+str);
            CalcStr.getStatics(str);
            str = sc.next();
        }
    }
}

3.测试结果(控制台打印输出)

a
输入字符串为:a
b
输入字符串为:b
c
输入字符串为:c
calc
输入字符串为:calc
排除无效输入,总共输入字符串数量:3
reset
输入字符串为:reset
calc
输入字符串为:calc
排除无效输入,总共输入字符串数量:0
d
输入字符串为:d
e
输入字符串为:e
calc
输入字符串为:calc
排除无效输入,总共输入字符串数量:2

4.静态变量归属于整个类举例

public class MovieCenter {
    private static int personNum;

    public void setPersonNum(int personNum) {
        MovieCenter.personNum = personNum;
    }

    public int getPersonNum() {
        return personNum;
    }
}

// 下面是测试 personNum 静态变量如何归属于整个类的

public class Main {
    public static void main(String[] args) {
        MovieCenter movieCenter_1 = new MovieCenter();
        movieCenter_1.setPersonNum(18);
        MovieCenter movieCenter_2 = new MovieCenter();
        System.out.println(movieCenter_2.getPersonNum());
    }
}

输出:

18

movieCenter_1 对象的 personNum 被赋值过,但是 movieCenter_2 对象并没有赋值;但是获取movieCenter_2 对象的personNum值时发现跟movieCenter_1共用。

5.结语
静态变量在生产的时候慎用,一旦出错不好排查原因;静态方法可在工具类包中使用提高调用效率。