В ступенчатых массивах количество элементов в разных строках может различаться. В памяти ступенчатый массив хранится иначе, чем прямоугольный: в виде нескольких внутренних массивов, каждый из которых имеет свой размер. Кроме
того, выделяется отдельная область памяти для хранения ссылок на каждый из внутренних массивов. Организацию ступенчатого массива иллюстрирует рис. 6.5.
массив Ссылки
на строки
0 1
Рис. 6.5. Ступенчатый массив
Описание ступенчатого массива: тип[][] имя;
Под каждый из массивов, составляющих ступенчатый массив, память требуется выделять явным образом, например:
int[][] a = new int[3][]; // выделение памяти под ссылки на три строки
а[0] = new int[5]; // выделение памяти под 0-ю строку (5 элементов)
а[1] = new int[3]; // выделение памяти под 1-ю строку (3 элемента)
а[2] = new int[4]; // выделение памяти под 2-ю строку (4 элемента)
Здесь а[0], а[1] и а[2] — это отдельные массивы, к которым можно обращаться по имени (пример приведен в следующем разделе). Другой способ выделения памяти:
int[][] а = { new int[5], new int[3], new int[4] };
К элементу ступенчатого массива обращаются, указывая каждую размерность в своих квадратных скобках, например:
а[1][2] a[i][j] a[j][i]
В остальном использование ступенчатых массивов не отличается от использования прямоугольных. Ступенчатые массивы удобно применять, например, для работы с треугольными матрицами большого объема.