在Java中将数组复制到另一个数组时出错

Enr*_*tyo 2 java arrays copy

谷歌搜索了一段时间后,我知道有很多方法可以用Java将数组复制到另一个数组,即使用System.arraycopy.

但是我的一些朋友试图用这个:

boolean a[][] = new boolean[90][90];
boolean b[][] = new boolean[90][90];

/* after some computations */

a = b
Run Code Online (Sandbox Code Playgroud)

这会产生一个相当不确定的结果,有谁知道这实际上是做什么的?

Jon*_*eet 11

它根本不是非确定性的.

a = b;
Run Code Online (Sandbox Code Playgroud)

只需指定bto 的值a.值b是对数组的引用 - 所以现在两个变量都包含对同一数组的引用.旧的值a是无关紧要的 - 如果它引用了一个没有其他任何引用的数组,它现在将有资格进行垃圾收集.

请注意,这不是特定于数组的 - 它是所有引用类型在Java中工作的方式.

基本上,您根本不会将一个数组复制到另一个数组中 - 您将对数组的引用复制到另一个变量中.就这样.