如何在java中通过引用传递双精度值?
example:
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 编写一个专家系统,在该应用程序中,段的长度将具有双精度值,现在双精度值不在单个段中;它在许多其他部分、比例等级等中,所有这些都引用它,等待它改变,以便它们可能满足一些规则。
如果我无法更改该双精度值,则无法触发某个包含引用该双精度值的对象的规则。
Java不支持指针,因此不能直接指向a的内存(如在C/C++中)。
Java确实支持引用,但引用只是对对象的引用。无法引用本机(内置)类型。因此,当您执行时(自动装箱将代码转换为以下内容)。
双a = new Double(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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)