Это потому, что массивы являются ссылками в Java.Поэтому присвоение xy
yx
делает их одним и тем же массивом.Поэтому, когда вы перезаписываете первый индекс с помощью "Y"
, они оба имеют значения {"Y", "Y"}
.
import java.util.ArrayList;
public class MyClass {
public static void main(String args[]) {
// xy[0] = "X" and xy[1] = "Y"
String[] xy = {"X", "Y"};
// arrays are references, so yx and xy are now the same array
String[] yx = xy;
// yx[0] = "Y"
yx[0]=xy[1];
// yx[1] = "Y", this is because they refer to the same array
yx[1]=xy[0];
System.out.println(xy[0] + xy[1]+yx[0]+yx[1]);
}
}
Если вы распечатываете оба массива, вы можете видеть это.Добавление этого после yx = xy
:
System.out.println(xy);
System.out.println(yx);
даст некоторый результат, подобный следующему:
[Ljava.lang.String;@3caeaf62
[Ljava.lang.String;@3caeaf62