【问题标题】:Static java issue [duplicate]静态java问题[重复]
【发布时间】:2014-12-10 11:50:36
【问题描述】:

我有两个类一个是:

public class Emp {
    String name;
    static int bankVault;
    }

另一个是:

public class TestEmp {
public static void main(String[] args) {
    Emp emp1 = new Emp();
    Emp emp2 = new Emp();
    emp1.bankVault = 10;
    emp2.bankVault = 20;
    System.out.println(emp1.bankVault);
    System.out.println(emp2.bankVault);
    System.out.println(Emp.bankVault);
    }
}

输出是:

20
20
20

这是因为static 这个词吗?第一个System.out.println不应该返回10吗?

【问题讨论】:

  • 这是展示“静态”如何工作的示例。你只有一个bankValault。所以你总是得到相同的价值
  • 参见 Oracle 的 Java 教程中的 Understanding Class Members
  • 10 将被 20 覆盖,即具有最新值。始终可以将一个值设置为静态字段。

标签: java


【解决方案1】:

是的,是因为static这个词。使用static 意味着您不需要对象的实例来访问它。

可以使用Emp.bankVault 访问它。该属性在class Emp 加载时初始化,因此不需要Emp 对象的实例。

设置后,无论您使用哪个 Emp 实例读取它,它都将具有相同的值。

【讨论】:

    【解决方案2】:

    是的,static 表示“每个类一个”而不是“每个实例一个”。一旦你修改它,你就可以为所有实例修改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多