返回数组内容而不是内存地址
Returning Array contents instead of memory address
所以我正在尝试 return 方法中数组的内容。
让我们假设这个数组被称为 x 并且它已经有值了。
public int[] returnArray()
{
return x;
}
现在,我知道这将 return 数组的内存地址。所以我尝试了我之前看到的这个解决方法:
public int[] returnArray()
{
int[] y=new int[x.length]
for (int i=0;i<x.length;i++)
{
y[i]=x[i]
}
return y;
}
现在,这也是return数组的内存地址。没有解决方法吗?
你不能 return 除了地址之外的任何东西,因为你可以 return 的只是 一个 值。数组通常包含多个值。
例如,您可以 return 数组位置 0 处的值,但不能同时显示所有不同的值。
发帖者 "workaround" 显然毫无头绪。这将创建另一个数组并将原始数组的内容复制到新数组中,然后 returns that 数组的地址。
但是,您不需要 return 数组的元素,数组引用允许您访问元素。
returnArray()[0]
获取 returned 数组的第一个元素(参考)。
要打印元素,您可以遍历数组:
for (int x : returnArray()) {
System.out.println(x);
}
return x;
returns 对数组的引用,它使您可以访问数组的所有元素。
您可能认为您获得了 "memory address of the array",因为您尝试使用 System.out.println(returnArray());
打印数组,但它不显示数组的元素。您应该使用 System.out.println(Arrays.toString(returnArray()));
打印数组
所以我正在尝试 return 方法中数组的内容。 让我们假设这个数组被称为 x 并且它已经有值了。
public int[] returnArray()
{
return x;
}
现在,我知道这将 return 数组的内存地址。所以我尝试了我之前看到的这个解决方法:
public int[] returnArray()
{
int[] y=new int[x.length]
for (int i=0;i<x.length;i++)
{
y[i]=x[i]
}
return y;
}
现在,这也是return数组的内存地址。没有解决方法吗?
你不能 return 除了地址之外的任何东西,因为你可以 return 的只是 一个 值。数组通常包含多个值。
例如,您可以 return 数组位置 0 处的值,但不能同时显示所有不同的值。
发帖者 "workaround" 显然毫无头绪。这将创建另一个数组并将原始数组的内容复制到新数组中,然后 returns that 数组的地址。
但是,您不需要 return 数组的元素,数组引用允许您访问元素。
returnArray()[0]
获取 returned 数组的第一个元素(参考)。
要打印元素,您可以遍历数组:
for (int x : returnArray()) {
System.out.println(x);
}
return x;
returns 对数组的引用,它使您可以访问数组的所有元素。
您可能认为您获得了 "memory address of the array",因为您尝试使用 System.out.println(returnArray());
打印数组,但它不显示数组的元素。您应该使用 System.out.println(Arrays.toString(returnArray()));