两个字段之间的Java关系

时间:2013-02-16 22:22:57

标签: java field

我在java类中有两个字段,都是整数:

int a = 0;  
int b = a * a;

字段a收到另一个值10后,例如。但它对字段b没有任何影响,此字段仍然是0而不是100

如何以'java'风格做到最好?

5 个答案:

答案 0 :(得分:3)

您还必须为b指定一个值。你应该将a和b设为私有,并为两者提供getter以及为此更新b的setter:

int getA() {
    return a;
}

int getB() {
    return b;
}

void setA(int a) {
    this.a = a;
    this.b = a*a;
}

答案 1 :(得分:3)

每个字段都是一个独立变量,读取它通常会返回最后写入它的值(*)。

为了实现您需要的行为,您应该b方法:

public class X {
    int a = 0;

    int b() {
        return a*a;
    }
}

现在,将a设置为10将使{{​​1}}返回100.这也意味着您无法为b()分配值,但如果您始终希望其值为b()这可能也是你所期望的。

我还建议您保留a*a私有并为其添加访问者方法,但这完全是另一个故事。

(*)假设在多线程的情况下有单个线程和/或适当的协调。

答案 2 :(得分:2)

请注意int b = a * a;只是进行计算并存储结果。 Java不记得结果的来源。如果a发生更改,则需要手动更新b以传播该更改。

答案 3 :(得分:0)

这些是原语而不是引用。换一个不影响另一个。
不知道你想做什么。

答案 4 :(得分:0)

一旦第二行 int b = a* a 由jvm处理,jvm不会记住它。只有b的值将保留在内存中。