Java类的static变量的使用

众所周知类中的普通变量(V)只能适用于单一实例(A)的处理,如果没有专门的函数来传递(V),其他的实例(B)是无法改变V的值的。
(①A,B类型相同②或者A,B都为某个父类的相同子类或不同子类)
要在没有专门的函数将A的V来传递给B的情况下,就是将V设置为静态变量。如此A,B对V进行的处理都能直接通过各自获取。
举个生动的例子:(A,B为同一父类的下的不同子类)
银行账户父类下有利息账户子类和支票账户子类。
银行规定一旦一个人交易次数达到一定次数,之后的每次交易都要缴纳手续费。
现在只有银行账户类里统计交易次数的变量Cnt,只有将Cnt设置为静态变量才可以供利息账户和支票账户同时计算交易次数。
以下代码为A,B同类型的代码演示。
完整代码:
Main部分

public class Main
{
	public static void main(String[] args)
	{
		System.out.println("创建两个同Example_Static类型的变量:es1,es2");
		Example_Static es1 = new Example_Static();
		Example_Static es2 = new Example_Static();
		System.out.print("获取es1.num的初始值:");
		es1.GetNum();
		System.out.println("es1.num+1");
		es1.NumAdd();
		System.out.print("获取es1.num:");
		es1.GetNum();
		System.out.print("获取es2.num(由于num为静态变量,所以得到的num是经过前面es1中运算过的num):");
		es2.GetNum();
		System.out.println();
		System.out.print("获取es1.num1的初始值:");
		es1.GetNum1();
		System.out.println("es1.num1+1");
		es1.Num1Add();
		System.out.print("获取es1.num1:");
		es1.GetNum1();
		System.out.print("获取es2.num1(由于num1为普通变量,所以得到的是es2中运算num1,不受es1.num1的影响):");
		es2.GetNum1();
	}
}

类部分:
注:num 为静态变量,num1为普通变量

public class Example_Static
{
	public static int num = 1;
	public int num1=1;
	public int NumAdd()
	{
		return ++num;
	}
	public int Num1Add()
	{
		return ++num1;
	}
	public void GetNum()
	{
		System.out.println(num);
	}
	public void GetNum1()
	{
		System.out.println(num1);
	}
}

代码运行结果
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43228135/article/details/83587246