java - Java 中静态变量的问题

标签 java variables static single-instance

我需要对以下代码的输出进行解释:

class Stats
{
    static int a = 10;
    int b = 20;
    void printMe()
    {
        System.out.println(a+b);
    }
}

public class Static
{
    public static void main(String args[])
    {
        Stats s1 = new Stats();
        Stats s2 = new Stats();
        s1.b = 30;
        s1.printMe();
        s1.a = 20;
        s2.printMe();
    }
}

输出: 40 40

我预计它是 40 和 50,因为应该只有一个静态变量“a”的副本,该副本通过引用“s1”修改为 20。

最佳答案

a 是静态的,也称为“类变量”, a 的值在 Stats 的所有实例中都相等,

所以在第一次调用中: 对于 s1,a 等于 10,b 等于 30, 所以 a+b 等于 40,

在第二次调用中: 对于 s2,a 等于 20,b 等于 20, 所以a+b等于40

关于java - Java 中静态变量的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247078/

相关文章:

java - 使用 SmartGWT 包装预制元素?

php - 如何更新该散列循环内的 Ruby 散列项?

c++ - 为什么 std::string 是零初始化为不确定值

java - 静态类的替代品

java - 为什么在Thread类 "public static final int MAX_PRIORITY"中声明为int?

java - 如何确保 java 中并发列表的元素(在列表循环后添加)得到正确处理?

java - 我们可以依赖maven来处理运行时的类加载问题吗?

java - 可定制的Java应用程序想法

C++ 静态结构类型成员初始化

variables - 您可以在 terraform 中将查找函数与包含数组的 map 变量一起使用吗?