我在java类中有两个字段,都是整数:
int a = 0;
int b = a * a;
例如,一旦该字段a
接收到另一个值,10
。但它对 field 没有任何影响b
,这个 field 仍然存在0
而不是100
。
如何以“java”风格做到最好?
您还必须为 b 分配一个值。您应该将 a 和 b 设为私有,并为两者提供 getter,并为 a 提供一个 setter,它也像这样更新 b:
int getA() {
return a;
}
int getB() {
return b;
}
void setA(int a) {
this.a = a;
this.b = a*a;
}
每个字段都是一个独立变量,读取它通常会返回最后写入它的值 (*)。
为了实现您需要的行为,您应该创建b
一个方法:
public class X {
int a = 0;
int b() {
return a*a;
}
}
现在,设置a
为 10 将b()
返回 100。这也意味着您不能将值分配给b()
,但如果您总是希望它的值是,a*a
这可能也是您所期望的。
我还建议您保持a
私有并为其添加访问器方法,但这完全是另一回事。
(*) 假设单个线程和/或在多个线程的情况下进行适当的协调。
请注意,它int b = a * a;
只是进行计算并存储结果。Java 不记得结果来自哪里。如果a
发生更改,您将需要手动更新b
以传播该更改。
这些是原语而不是参考。改变一个不会影响另一个。
不知道你想做什么。
一旦
int b = a* a
jvm 处理了第二行,jvm 就不会记住它。只有 b 的值将保留在内存中。