我在java类中有两个字段,都是整数:
int a = 0;
int b = a * a;
字段a
收到另一个值10
后,例如。但它对字段b
没有任何影响,此字段仍然是0
而不是100
。
如何以'java'风格做到最好?
答案 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的值将保留在内存中。