Есть простая ошибка, которую вы делаете, переменная int [] locations = new int[5];
на самом деле не содержит массив длины 5. Она просто содержит ссылку на массив длины 5 где-то в куче.
Именно это и делает следующее утверждение,
int[] locationOfShips = {6,7,8,9,1,2,3,4,4,4,4,5,5,5};
поэтому, когда вы запускаете this.locations= locations;
, вы фактически говорите, что переменная теперь ссылается на массив locationOfShips
Если это не ясно, я предлагаю вам прочитать хорошее объяснение о передаче по ссылке здесь ( Передаются ли массивы по значению или по ссылке в Java? )