如何在java函数中修改两个双对象?
我的函数接受两个双对象作为输入,我想修改它们 函数内部。这似乎是不可能的,似乎java在内部复制了它们 功能。这是如何在java中完成的,C++中你通过引用。< /P>如何在java函数中修改两个双对象?,java,Java,我的函数接受两个双对象作为输入,我想修改它们 函数内部。这似乎是不可能的,似乎java在内部复制了它们 功能。这是如何在java中完成的,C++中你通过引用。< /P> 谢谢包装类是不可变的,这就是您无法修改它们的原因。一种方法是,您可以使用这两个属性创建一个类,并将其传递给函数,在函数内部,为该对象设置新值。Java是按值调用的,所以您是对的:必须以另一种方式完成。您可以做的是将双对象包装到包装类中,并修改存储在该对象中的双精度。 否则,没有其他方法,因为您将更改的唯一值是局部参数 publi
谢谢包装类是不可变的,这就是您无法修改它们的原因。一种方法是,您可以使用这两个属性创建一个类,并将其传递给函数,在函数内部,为该对象设置新值。Java是按值调用的,所以您是对的:必须以另一种方式完成。您可以做的是将
双对象包装到包装类中,并修改存储在该对象中的双精度。
否则,没有其他方法,因为您将更改的唯一值是局部参数
public class DoubleWrapper
{
private double d1, d2;
public void setter(double newdouble){}
public double getter() {}
}
在数组中传递双值,可以修改函数中的数组元素。这里有两个问题:
首先,Java中的所有值都是按值传递的。这意味着,当一个对象X被发送到一个函数时,该函数将保存一个新版本的X
其次,不能修改双精度值。您必须修改double
,并且可以通过运行d.doubleValue()
将double d
转换为double
,一般来说,您不应该修改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;
}
Double
对象是不可变的。你的方法是不可能的。看这个问题可能重复的
class MyDoubles {
double d1, d2;
public void squareDoubles() {
d1 *= d1;
d2 *= d2;
}
public String toString() { return "{ " + d1 +", " + d2 + "}"; }
}