什么时候使用静态变量更好?

When is it better to use static variable?

我想知道为什么有时我会看到带有静态变量的代码?什么时候使用静态变量而不是 "normal" 变量更好?如果它的值不会从一个实例变为另一个实例,那么使用 final 变量不是更好吗?

使用静态变量的要点与最终变量不同。

无法修改最终声明的变量(静态或非静态)。它们通常用作 "reference values" 或常量。

因此需要静态变量(和方法)"shared content"。例如,假设办公室里的每个人都喜欢喝咖啡。我们最好让每个人都自带咖啡机吗?还是我们最好为整个办公室共用一台这样的机器?

显然您想选择共享选项。在编程习语中,这将转化为在 Office class 中有一个 static 变量,代表唯一的 CoffeeMachine.

题外话但你肯定不想做这台咖啡机final。如果有人打破它怎么办?您需要替换它,从而更改变量。

当只需要变量的一个副本时使用静态变量。因此,如果您在方法中声明变量,则不会使用此类变量,它只会成为局部函数..

声明为静态的变量通常在 class 的所有实例之间共享。

static 意思是,这个对象的所有实例中的变量都是一样的。

主要示例是对象计数器。

class foo{

   private static int count = 0;

   public foo()
   {
      count ++;
   }

   public static getCountOfObj()
   {
      return count; 
   }
}

因此您可以在所有 foo-Objects 上编辑它。

我假设你指的是静态字段。

static 字段与 class 关联,而实例字段与 对象 关联(又名 class 实例)。

如果一个字段被标记为 final(适用于实例字段和静态字段),则它不能被重新分配

所以每个人都有自己不同的角色。