静态成员在程序中只有一份,可以做到数据共享和同步。缺点就是共享了那么我想进行一些操作可能会影响到其他的对象,比如:
class A{
public static int val = 1;
}
class B {
}
class C {
}
B b = new B();
C c = new C();
如果b对象要向c对象发送一个整型值,他就可以通过修改val的值然后让c读取。c想向b发送数据也是一样。但是如果b和c是在两个线程中的对象的话,就会出问题,比如在线程X中有一个b对象,它要向线程Y中的c对象发送整形,但是b不知道c会在什么时候读取,这时候就会出问题,比如说b向c发送的数据是用来求平方的,b发送完之后,再取回一个平方值:
有可能当b取值时,c还没有更新val值,这时b就得到了错误的值。
在银行的系统中,就出现过本来卡里面有200块钱,但是有人能够取出400块的事情。就是这个原因。
其实类的静态成员就是公共变量。静态成员的优点和缺点就是公共变量和私有变量的区别。