我不明白为什么这个问题的答案是BABA,根据基拉学习和BBBB,当我投入w3schools时。根据我自己的计算,我得到了ABBA。根据 java Visualizer、w3schools 和 chatgpt,他们将 ab 和 ba 都更改为 {"B", "B"},这对我来说没有意义。
我的工作:
ba[0] = "A"
,变为 ab[1]
(B)。 ba = {"B", B"}
ba[1] = "B"
,变为 ab[0]
(A)。 ba = {"B", "A"}
ab = {"A","B"}
ba = {"B", "A"}
ab[0] + ab[1] + ba[0] + ba[1]
=ABBA
请告诉我哪里出了问题,我是java初学者。问题是这样的:
String[] ab = {"A", "B"};
String[] ba = ab;
ba[0] = ab[1];
ba[1] = ab[0];
System.out.println(ab[0] + ab[1] + ba[0] + ba[1]);
您没有将数组复制到
ba
,但您做了一个引用。更改其中一个的内容会同时更改两者。
ba[0] = ab[1];
// ab[0] is now also set to ab[1], so ab[0] is B and ab[1] is B
ba[1] = ab[0];
// ab[1] is now also set to ab[0]
要实现您的期望,请使用
Array.clone()
:
String[] ab = {"A", "B"};
String[] ba = ab.clone();
ba[0] = ab[1];
ba[1] = ab[0];
System.out.println(ab[0] + ab[1] + ba[0] + ba[1]);