Обратный массив в Java

Я пытаюсь повернуть массив двумя способами:

1) Создав новый массив, который был очень простым:

public static int[] reverse(int[] array) {
    int[] reverseArray = new int[array.length];
    for(int i = 0; i < reverseArray.length; i++) {
        reverseArray[i] = array[array.length - i - 1];
    }
    return reverseArray;
}

2) Второй метод, я получил свой ответ, но я на самом деле неЯ не очень хорошо это понимаю, он на самом деле использует подкачку, присваивая значение массива временной переменной, затем изменяет его и возвращает исходную переменную:

public static int[] reverse2(int[] array)
{
    for (int i=0; i < array.length / 2; i++)
    {   
        int temp = array[i];
        array[i] = array[array.length - i - 1];
        array[array.length - i - 1] = temp;
    }
    return array;
}

Может ли кто-нибудь объяснить мне второй код? Я нене понимаю деление на 2? Что произойдет, если размер массива будет четным или нечетным?

Ответы на вопрос(6)

Ваш ответ на вопрос