我的函数将两个 Double 对象作为输入,我想在函数内部修改它们。似乎不可能,似乎java将它们复制到函数中。这是如何在java中完成的,在c ++中你通过引用传递。
谢谢
包装类是不可变的,这就是您无法修改它们的原因。一种方法是,您可以创建一个具有这两个属性的类并将其传递给函数,在函数内部,为该对象设置新值。
您可以做的是将Double
对象包装到 Wrapper 类中,并修改存储在该对象中的双精度值。否则,别无他法,因为您要更改的唯一值是本地参数。
public class DoubleWrapper
{
private double d1, d2;
public void setter(double newdouble){}
public double getter() {}
}
传递数组中的双精度值,您可以修改函数中的数组元素。
这里有两个问题:
首先,Java 中的所有值都是按值传递的。这意味着,当一个对象 X 被发送到一个函数时,该函数拥有一个新版本的 X。
其次,您不能修改Double
值。您必须修改 a double
,并且可以通过运行从 转换Double d
为。double
d.doubleValue()
Java 是按值调用的,所以你是对的:它必须以另一种方式完成。
一般来说,您不应该修改 Java(或任何语言)中的参数
相反,我建议您将更改的值作为数组返回
public static double[] square(double... doubles) {
double[] ret = new double[doubles.length];
for(int i = 0; i < doubles.length; i++)
ret[i] = doubles[i] * doubles[i];
return ret;
}
理想情况下,你会有一个包装这些双打的类,然后你调用一个方法来改变它们
class MyDoubles {
double d1, d2;
public void squareDoubles() {
d1 *= d1;
d2 *= d2;
}
public String toString() { return "{ " + d1 +", " + d2 + "}"; }
}