Я не понимаю, почему ответ на этот вопрос — BABA в соответствии с обучением Киры и BBBB, когда я добавляю в w3schools. По моим собственным расчетам, я получил ABBA. Согласно визуализатору Java, w3schools и
Моя работа:
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] = АББА
Просветите меня, где я ошибся, я новичок в 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]);
Ох, значит массив не меняется. Я могу просто рассматривать ba[0], ab[1], ba[1] и ab[0] как переменные. ba[0] = B, ab[1] = A, ba[1] = A и ab[0] = B. Следовательно, ответ — БАБА. Теперь я это вижу, спасибо!
@sjj Ответ: «BBBB». После ba[0] = ab[1] «A» больше не существует.
@RickyMo это потому, что ba[0] (A) = ab[1] (B). итак ба = {"B", "B"}. и поскольку ba = ab, ab и ba равны {"B", "B"}. В результате ответом будет BBBB?
@sjj да, это так.
Попробуйте инициализировать baby
String[] ba = new String[2];вместоString[] ba = ab;.