如何在 java 中通过引用传递 double 值?
例子:
Double a = 3.0;
Double b = a;
System.out.println("a: "+a+" b: "+b);
a = 5.0;
System.out.println("a: "+a+" b: "+b);
此代码打印:
a: 3 b: 3
a: 5 b: 3
我的问题是让它打印:
a: 3 b: 3
a: 5 b: 5
我的目标: 我正在用 jess 编写一个专家系统,在那个应用程序中,一个段的长度会有一个 double 值,现在 double 值不在一个段中;它在许多其他部分、比例类等中,所有这些都在引用它,等待它发生变化,以便它们可能满足某些规则。
如果我无法更改那个 double 值,我就无法触发包含引用该 double 值的对象的特定规则。
最佳答案
Java不支持指针,所以不能直接指向a的内存(C/C++)。
Java确实支持引用,但引用只是对对象的引用。无法引用 native (内置)类型。因此,当您执行时(自动装箱将代码转换为以下代码)。
双 a = 新双 (3.0);
这意味着当你执行
Double b = a;
您获得了对 a 的对象的引用。当你选择改变一个(自动装箱最终会把你上面的代码转换成这个)
a = new Double(5.0);
这不会影响 b 对先前创建的 new Double(3.0)
的引用。换句话说,您不能通过直接操作 a 来影响 b 的引用(或者 Java 中没有“远距离操作”)。
也就是说,还有其他解决方案
public class MutableDouble() {
private double value;
public MutableDouble(double value) {
this.value = value;
}
public double getValue() {
return this.value;
}
public void setValue(double value) {
this.value = value;
}
}
MutableDouble a = new MutableDouble(3.0);
MutableDouble b = a;
a.setValue(5.0);
b.getValue(); // equals 5.0
关于java - 通过引用传递 double 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5749251/