Посмотрите на этот код:
int selectedBoard = selectBoard(boardArray);
workingBoardArray[0] = boardArray[selectedBoard];
workingBoardArray[1] = boardArray[selectedBoard];
workingBoardArray[2] = boardArray[selectedBoard];
workingBoardArray[3] = boardArray[selectedBoard];
Это устанавливает для всех четырех элементов массива значение , ссылающееся на один и тот же объект.Так что да, когда вы изменяете этот объект, вызывая moveUp()
или что-то еще, это изменение будет видимым через все элементы в массиве.
Звучит так, как будто вы хотите создать копия доски каждый раз.В зависимости от того, что делает ваш тип board
(который должен называться Board
в соответствии с соглашениями об именах), вы можете просто реализовать Cloneable
(вполне возможно, переопределив метод clone()
) или предоставить какой-либо другой вид операции копирования.
Известно ли вам о разнице между ссылка и объект в Java и что массив содержит только ссылки, а не объекты?(Аналогично, любое значение переменной будет только ссылкой, а не объектом.) действительно важно понимать, как объекты работают в Java.Например:
StringBuilder a = new StringBuilder();
StringBuilder b = a;
a.append("Foo");
System.out.println(b); // Still prints "Foo"
Здесь у нас есть один StringBuilder
объект, хотя есть две переменные (a
и b
), значения которых относятся к тому жеобъект.