返回对数组的引用是什么意思?

时间:2014-02-11 02:14:15

标签: java arrays

我正在对数组进行一些练习,并且在按元素逐个复制之后,系统提示我返回对数组的引用。这到底是什么意思?

我的代码如下:

 public static int[] cloneArray(int array[])
  {
    int[] arraycopy = new int[array.length];
    for(int i = 0; i < array.length; i++)
    {
      arraycopy[i] = array[i];
    }
    return arraycopy;
  }

我不知道我应该返回什么作为“引用”:我应该返回一个int数组还是一个int?每当我尝试打印数组时,我都会得到一个奇怪的字符和数字组合(除非我调用Arrays.toString())。

3 个答案:

答案 0 :(得分:6)

“返回对数组的引用”只是表示“返回一个数组”。

Java只返回,它们是基元或对象引用(即对于对象,参考)。

虽然Java是基于C的,但它并没有像C那样使用指针等等。

答案 1 :(得分:1)

在Java中,数组和对象不像int这样的基本类型。请考虑以下代码:

public class MyClass {
  public static int method1(int ar[]) {
    int x = ar[1];
    ar[1] = 3;
    return x;
  }
}

现在假设在其他地方,执行以下代码:

int abcd[] = new int[3];
abcd[0] = 0;
abcd[1] = 1;
abcd[2] = 2;
int d = MyClass.method1(abcd);
System.out.println(abcd[1]);

会打印什么?它不是1,而是3.这是因为该方法没有给出数组中的数据,它被告知数组的位置。换句话说,它传递了一个引用。因为它使用了引用,所以更改数组索引的值会在调用它的代码中更改其值。如果method1将int作为参数,则不会发生这种情况。

基本上,在Java中,方法不接受数组作为参数或返回数组。它们仅使用对数组的引用。对象也是如此(除了通过值传递的字符串)。

答案 2 :(得分:0)

在Java中,只能通过引用访问对象。只需返回Array对象。