如何在java中通过引用传递双精度值?
示例:
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写一个专家系统,在这个应用程序中,一个段的长度应该是双精度的,因为双精度值不是在一个单独的段中;它在许多其他的段中,比例classes..etc,所有这些都在引用它,等待它改变,这样它们可能会满足一些规则。
如果我不能改变那个双精度值,我就不能有一个包含引用双精度值的对象的特定规则触发。
发布于 2011-04-22 04:15:08
Double在Java中是不可变的。赋值a = 5.0并没有改变a的双精度值,它实际上是创建了一个全新的双精度对象,并改变了a持有的指针的值,以指向该新对象。如果您希望能够在不更改引用的情况下更改值,则需要创建一个可变的双精度值。
public class MutableDouble {
private Double value;
public Double getValue() {
return value;
}
public void setValue(Double value) {
this.value = value;
}
@Override
public String toString() {
return value != null ? value.toString() : "null";
}
}然后调用a.setValue(5.0);两者都会改变。
https://stackoverflow.com/questions/5749251
复制相似问题