Java за неделю. Вводный курс. Валерий Станиславович Яценков
Чтение книги онлайн.
Читать онлайн книгу Java за неделю. Вводный курс - Валерий Станиславович Яценков страница 18
5.1.3 Присваивание массивов
Переменные массивов относятся к переменным ссылочного типа. Это значит, что в переменной массива хранится ссылка на область памяти, в которой хранится массив. Следовательно, этой переменной можно присвоить ссылку на другой массив. Массивы должны быть одного и того же типа и размерности, но вот размер не обязательно должен совпадать, потому что переменной массива присваиваются не новые данные, а новая ссылка на них.
Операция присвоения массивов проста, но может привести к неочевидным последствиям. Рассмотрим простой пример присвоения:
int [] first = {10,20,30,40};
int [] second = new int [6];
second = first;
first [2] = 50;
В первой строке мы создаем массив из четырех элементов. Во второй строке объявляем массив из шести элементов. В третьей строке переменной второго массива присваиваем ссылку на первый массив. После выполнения команды обе переменных ссылаются на один и тот же массив. Как вы думаете, какое значение будет у элемента second [2] после выполнения команды first [2] = 50? Правильно, тоже 50. Ведь это одна и та же ячейка памяти, на которую ссылаются разные переменные массива.
5.2 Двумерные массивы
Двумерный массив проще всего представить в виде таблицы, состоящей из строк и столбцов. Каждый элемент двумерного массива однозначно определяется двумя индексами – номером строки и номером столбца, на пересечении которых находится элемент. К сожалению, этот образ хоть и нагляден, но не совсем корректен. Дело в том, что строки в этой «таблице» не обязательно должны иметь одинаковую длину.
Более правильно двумерный массив можно представить как одномерный «внешний» массив, элементами которого являются ссылки на одномерные «вложенные» массивы. Первый индекс определяет ссылку на вложенный массив. Второй индекс определяет элемент вложенного массива. В таком случае более очевидно, что вложенные массивы могут иметь различный размер.
Строго говоря, многомерные массивы с вложенными массивами одинакового размера являются лишь частным случаем общего типа коллекции объектов. Язык Java позволяет работать с коллекциями, в которых вложенные объекты имеют разный размер. Но углубленное изучение понятия коллекций выходит за рамки книги для начинающих. Пока вам достаточно знать, что вложенные массивы могут иметь разную длину, и в работе с такими массивами нет принципиальных особенностей.
Двумерный массив определяется так же, как одномерный:
int [] [] coord = new int [10] [15];
Данную команду можно разделить на две:
int [] [] coord;
coord = new int [10] [15];
Нумерация по каждому индексу начинается с нуля. Размер массива зависит от того, о каком массиве идет речь – внешнем или вложенном. Размер по первому индексу означает количество вложенных массивов (количество строк):
int x = coord. length; // x = 10
Размер по второму индексу означает количество элементов вложенного массива (количество столбцов):
int y = coord [0].length; // y = 15
Поскольку при создании классического двумерного массива (а не коллекции) все вложенные массивы