Java 当数组通过其他方法更改数组时,为什么会以不同的方式打印?

Java 当数组通过其他方法更改数组时,为什么会以不同的方式打印?,java,arrays,Java,Arrays,你应该得到的结果是0,但我不明白为什么?当数组通过其他方法时,数组将发生更改 public class Tester { public static int function1 (int [] arr) { arr= function2(arr); return arr[0]; } public static int[] function2 (int [] arr) { arr = new int[4]; return arr; } pub

你应该得到的结果是0,但我不明白为什么?当数组通过其他方法时,数组将发生更改

public class Tester {
  public static int function1 (int [] arr) {
    arr= function2(arr);
    return arr[0];
  }
  public static int[] function2 (int [] arr) {
    arr = new int[4];
    return arr;
  }
    public static void main(String[] args) {
      int arr[] = {1,2,3,4};
      System.out.print(Tester.function1(arr));
    }
}

我希望打印的答案是4。

您正在function2中创建一个全新的数组。这就是为什么默认情况下它在每个索引中存储0。返回时,新数组仅返回。对于每个索引,它将只打印0。 为什么要在函数2中创建新数组?如果必须打印4,则只需传递现有数组并打印
arr[3]

代码如下:-


您正在function2中创建一个全新的数组。这就是为什么默认情况下它在每个索引中存储0。返回时,新数组仅返回。对于每个索引,它将只打印0。 为什么要在函数2中创建新数组?如果必须打印4,则只需传递现有数组并打印
arr[3]

代码如下:-


为什么你希望打印4?@Guy一般答案在你理解为什么它适用于这里之前不适用。为什么你希望打印4?@Guy一般答案在你理解为什么它适用于这里之前不适用。
public class Tester {
  public static int function1 (int [] arr) {
    arr= function2(arr);
    //return arr[0];
    return arr[3];
  }
  public static int[] function2 (int [] arr) {
    //arr = new int[4];
    return arr;
  }
    public static void main(String[] args) {
      int arr[] = {1,2,3,4};
      System.out.print(Tester.function1(arr));
    }
}