我想了解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]);
3 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
在Java中,数组名实际上保存了数组的起始地址(类似于c/c++)。数组索引是起始地址的偏移量。
因此,当您使用 时array2 = array1
,您实际上是在告诉编译器:
"Let array2 hold the same address as array1"
人到中年有点甜
TA贡献1895条经验 获得超7个赞
data2 = data1;
在第4行,您的订单将指从现在开始data1
指的地方data2
。所以,两个引用都指向同一个对象。使用其中一个引用进行的任何修改都会被对方看到。这就是=
运算符在 Java 中的实际作用。从技术上讲,这种方式是参考复制。
添加回答
举报
0/150
提交
取消