如何在java函数中修改两个双对象?

如何在java函数中修改两个双对象?,java,Java,我的函数接受两个双对象作为输入,我想修改它们 函数内部。这似乎是不可能的,似乎java在内部复制了它们 功能。这是如何在java中完成的,C++中你通过引用。< /P> 谢谢包装类是不可变的,这就是您无法修改它们的原因。一种方法是,您可以使用这两个属性创建一个类,并将其传递给函数,在函数内部,为该对象设置新值。Java是按值调用的,所以您是对的:必须以另一种方式完成。您可以做的是将双对象包装到包装类中,并修改存储在该对象中的双精度。 否则,没有其他方法,因为您将更改的唯一值是局部参数 publi

我的函数接受两个双对象作为输入,我想修改它们 函数内部。这似乎是不可能的,似乎java在内部复制了它们 功能。这是如何在java中完成的,C++中你通过引用。< /P>
谢谢

包装类是不可变的,这就是您无法修改它们的原因。一种方法是,您可以使用这两个属性创建一个类,并将其传递给函数,在函数内部,为该对象设置新值。

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 + "}"; }
}