`array = array` 是如何工作的?

我想了解array = array实际的作用。


为什么编辑data1会导致data2在此过程中稍后发生更改?


String[][] data1 = new String[5][1];

String[][] data2 = new String[1][1];


data1[0][0] = "Test 1";

data2 = data1;


//Prints "Test 1"

System.out.println(data2[0][0]);


data1[0][0] = "NEW";


//Prints "NEW"

System.out.println(data2[0][0]);


精慕HU
浏览 209回答 3
3回答

慕村9548890

在Java中,数组名实际上保存了数组的起始地址(类似于c/c++)。数组索引是起始地址的偏移量。因此,当您使用 时array2 = array1,您实际上是在告诉编译器:"Let array2 hold the same address as array1"

人到中年有点甜

data2 = data1;在第4行,您的订单将指从现在开始data1指的地方data2。所以,两个引用都指向同一个对象。使用其中一个引用进行的任何修改都会被对方看到。这就是=运算符在 Java 中的实际作用。从技术上讲,这种方式是参考复制。

神不在的星期二

正如在前面的答案中已经提到的那样,当您使用=运算符时它指的是同一位置,更改会反映在两者中。如果你不想那样,那么你应该使用克隆数组。您可以参考此答案以了解如何操作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java