Java静态元素被不同的类访问

标签 java types static primitive-types modifiers

在 Java 中,静态元素通过仅指定类名后跟 dot 运算符来访问。

假设,我有一个名为 ClassA 的类,其静态基元类型 int a = 10;

如果我有另外两个类ClassBClassC同时访问元素a并进行一些更改,会发生什么变化B 类 也会影响 C 类 吗?

最佳答案

What If I have other two class ClassB and ClassC access the element a at same time and make some change, will the change made by ClassB also impacts in the ClassC ?

只有一个ClassA.a,因为它是静态成员。 ClassB 所做的更改会影响 ClassA.aClassC 将看到更改,因为它正在查看同一成员。

您描述的场景最好用代码和图表来表达:

类(class):

class ClassA {
    static int a = 10;
}

class ClassB {
    static void look() {
        System.out.println("B sees " + ClassA.a);
    }
    static void change() {
        ClassA.a = 42;
    }
}

class ClassC {
    static void look() {
        System.out.println("C sees " + ClassA.a);
    }
    static void change() {
        ClassA.a = 67;
    }
}

使用它们:

ClassB.look(); // "B sees 10"
ClassC.look(); // "C sees 10"
ClassB.change();
ClassB.look(); // "B sees 42"
ClassC.look(); // "C sees 42"
ClassC.change();
ClassB.look(); // "B sees 67"
ClassC.look(); // "C sees 67"

图表:

                         +----------+
                         |  ClassA  |
                         +----------+
                  +-+--->| static a |
                  | |    +----------+
+-----------+     | |
|  ClassB   |     | |
+-----------+     | |
| (methods) |-use-+ |
+-----------+       |
                    |
+-----------+       |
|  ClassC   |       |
+-----------+       |
| (methods) |-use---+
+-----------+

关于Java静态元素被不同的类访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001598/

相关文章:

c# - 为什么我必须在不需要时使用关键字 static?

java - HttpResponse 返回 502 错误,似乎没有到达端点

java - 各种 boolean 类型之间的区别?

javascript - 对返回对象中的键值使用进行类型检查

c - 在 C 中遇到数组结构问题

haskell - 正确使用类和类型

java - 我们可以从空引用访问静态成员吗​​?如果是,为什么允许这样做?

java - 记录整个应用流程,方便阅读

java - 启动消费者时抛出异常 - (无法为微服务中的不同 channel 分配相同的组名称)

ios - 将 3rd 方静态库链接到静态库的测试目标结果的 undefined symbol 错误