【问题标题】:Why is the following Output the right one?为什么下面的输出是正确的?
【发布时间】:2023-01-20 01:31:37
【问题描述】:
public class Alle {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4};
        int [] y = arr;
        y[0] = 15;
        System.out.println(Arrays.toString(arr));
    }

}

输出是 15,2,3,4 但为什么呢?我从来没有改变过“arr”。

【问题讨论】:

  • (还没有找到正确的副本,但我确定有一个......)“我从来没有改变过‘arr’。”- 当然你做到了。您只是通过不同的变量引用了同一个数组。你有两个变量,但只有数组实例。
  • 阅读 Java 中的引用类型。
  • 这回答了你的问题了吗? How can an integer array be a reference type?

标签: java arrays initialization


【解决方案1】:

在 Java 中,数组是对象,而不是原始类型。当您将指向 arr 的链接分配给新变量时,y 仍指向 arr,因此您实际上是在更改 arr。就是这样。但是如果你想复制数组,可以使用这个方法:Arrays.copyOf(int[] original, int newLength)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多