в строках 12-15 мы создаем реверс для готового массива, что и нужно для решения задачи. но мне не понятны ходы действий... ..... 1. с циклом for я все понимаю, кроме i < array.length / 2. длина массива 9 или 18? (если я правильно понял, то длина массива- это количество ячеек в строке, т.е. в нашем случае 9) и почему нужно ее делить на 2? ..... 2. мы создаем новую переменную temp и приравниваем ее ко всему массиву array[i], далее весь массив array[i] мы приравниваем к этому же массиву, но измененным (вместо самого массива длина массива (array.length)), отнимаем i и постоянную 1. ( в значение i подставляется значения от 0 до 9? т.е. пока она не будет больше длины массива деленной на 2)? и почему всегда отнимаем единицу? .... 3. этот измененный массив приравниваем к новой переменной temp, которую ранее приравняли к самому массиву. т.е. изменненный массив array[array.length - i - 1] - это и есть реверс? ..... 4. тогда я не понял, как это выглядит... array[9 - 0 - 1, 9 - 1 -1, 9 - 2 - 1, 9 - 3 - 1....]= [8, 7, 6, 5...]. как тогда получается сам реверс в ответе? [99, 88, 77...] ...... 5. и я не понял, в методе main три строки: printArray reverseArray printArray. по логике же должен выводиться 3 раза массив? 11, 22, 33... 99, 88, 77... 11, 22, 33... но в ответе выводится только первая строка и вторая(реверс).
public class Solution {

    public static void main(String[] args) {
        int[] array = {11, 22, 33, 44, 55, 66, 77, 88, 99};
        printArray(array);
        reverseArray(array);
        printArray(array);
    }

    public static void reverseArray(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;
        }
    }

    public static void printArray(int[] array) {
        for (int i : array) {
            System.out.print(i + ", ");
        }
        System.out.println();
    }
}