Java 内存、按值传递、按引用传递

标签 java pass-by-reference pass-by-value

<分区>

Possible Duplicate:
Is Java pass by reference?

我有一个关于在 java 中按值传递和按引用传递的问题。

我编写了一个“Graph”类来将一长串 double 组显示为图形,(简化的)构造函数如下所示。

private double[] Values;

public Graph(double[] values) {
   Values = values;
}

数组可以很长并且占用合理的内存量。

基本上我的问题是:如果我调用构造函数来创建一个新图,数组“Values”是传递给它的数组的副本,还是一个引用?

在我看来,基元是“按值传递”而对象是“按引用传递”,这应该意味着数组将是一个副本。虽然我知道这个定义在技术上是不正确的。

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

提前致谢

克里斯。

最佳答案

虽然 double 是原始类型,但 double[] 是对象类型(数组),所以,不,不会将整个数组传递给构造函数,相反,数组将作为“引用值”传递。您将无法替换构造函数中的数组,但如果需要,您可以替换数组中的各个值。

关于Java 内存、按值传递、按引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398920/

相关文章:

C# XNA 在构造函数中通过引用类传递

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

java - 传递和设置 boolean 值 - Java/Android

java - head=head.getNext() 和 head=current.getNext() 有什么区别?

java - 调用一个方法从文件中读取数据

php - 如何在 PHP 中的数组中使用数组引用?

c++ - 简单的引用变量赋值导致全局指针中的段错误?

c - 长度为 8 的结构和 uint64_t 的效率

java - 本指南中的 JPA 实现是什么?

java - 持续集成 - 仅部署更改的组件