gpt4 book ai didi

java - 通过引用传递 double 值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:09:49 24 4
gpt4 key购买 nike

如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com