Java内存,传值,传递参考

Chr*_*192 1 java pass-by-reference pass-by-value

可能重复:
Java是否通过引用传递?

我有一个关于在java中传递值和通过引用传递的问题.

我有一个"Graph"类,我编写它来显示一个长数组的双精度图形,(简化)构造函数看起来像这样.

private double[] Values;

public Graph(double[] values) {
   Values = values;
}
Run Code Online (Sandbox Code Playgroud)

阵列可能很长并占用合理的内存量.

基本上我的问题是:如果我调用构造函数来创建一个新图形,那么数组"Values"是传递给它的数组的副本,还是它将作为引用?

在我看来,Primitives是"按值传递"而对象是"通过引用传递",这应该意味着数组将是一个副本.虽然我知道这个定义在技术上并不正确.

如果我是正确的,并且数组是副本,那么减少这个类使用的内存量并从另一个类引用数组的最佳方法是什么?抽象的GetValues()方法是否是实现此目的的好方法?

提前致谢,

克里斯.

Ale*_*s G 6

虽然double是原始类型,但是double[]是Object类型(数组),因此,不,整个数组都不会传递给构造函数,而是将数组作为"引用的值"传递.您将无法替换构造函数中的数组,但如果需要,您可以替换数组中的各个值.

  • 那么你使用"reference"作为指针的同义词.这就是我们在这里重复使用完全不同定义的术语的问题,感叹. (2认同)