更改一个数组中的值会更改另一个数组中的值

Ren*_*n S 2 java arrays android

我有一个很奇怪的问题。在活动中,我声明了两个数组

private String original[] = new String[100];
private String changed[] = new String[100];
Run Code Online (Sandbox Code Playgroud)

然后,我将值分配给这两个数组OnCreate

Bundle extras = getIntent().getExtras();

if (extras != null) {
      original = extras.getStringArray("sentArray");

      changed = original;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我更改changed数组成员的值,则original数组也将更改该成员。

例如,我做完之后

changed[0] = "New value";
Run Code Online (Sandbox Code Playgroud)

的值original[0]也是“新值”。

这样怎么可能?这是错误吗?

小智 7

 changed = original;
Run Code Online (Sandbox Code Playgroud)

该行将“更改”设置为“原始”,因此它们是具有相同指针的相同数组。您需要复制数组,而不是将设置更改为等于原始值。

您可以尝试使用System.arraycopy()