В этой статье поговорим о массивах. Разберем, что собой представляют массивы, каких видов они бывают, а также рассмотрим их методы и некоторые переменные. Массивы используются для хранения большого количества однотипных данных, таких как целые числа, строки или другие объекты. Массивы подразделяются на одномерные и многомерные. Одномерный массив записывается следующим образом:
int[] masiv=new int [10]
В первой части выражения (до знака «равно») объявляется массив с именем masiv типа int. Обратите внимание, что массив только объявляется, но пока «не существует». И только уже после знака «равно», точнее с помощью оператора new, в памяти выделяется область под массив данных типа int и размером 10 «ячеек» или «ящиков»). С этого момента можно сказать, что массив обрел «физическое состояние». Но вернемся к нашим домикам, мостам и....теперь эшелонам. Если представить, что эшелон - это массив, состоящий из вагонов, которые загружены зерном, то мы имеем массив ЭШЕЛОН с типом ЗЕРНОВОЙ, который только существует в наших планах:
зерновой [] эшелон;
Затем мы начинаем формировать в реальности массив эшелона с зерном в количестве 5-ти вагонов:
зерновой [] эшелон= new зерновой[5].
Вагоны пронумерованы, начиная с «0», что является индексом массива. Загадка: вагонов 5, а нумерация только до 4?). К данным массива обращаются с помощью индекса. Так как все вагоны опечатаны, и понять, что в них находится, невозможно. Однако нам нужно сообщить на первый разгрузочный пункт, что требуется разгрузить вагон с рисом. Для этого отправляем сообщение с нужным индексом вагона эшелона…массива:
эшелон[3] - что будет соответствовать вагону с рисом.
Существуют также многомерные массивы. Которые также подразделяются на двумерные, трехмерные и т. д. Чтобы лучше себе представить, двумерный это массив, у которого два измерения: строки и столбцы. Можно сказать, что такой массив представляет собой 2D.
Трехмерный массив это …кубик-рубик) или 3D. Ну а четырех… и далее, трудно себе представить.
На миг представим из мира фантастики, что вагоны в нашем зерновом эшелоне многоэтажные. Тогда обращение к вагону с рисом будет уже совсем другое.
эшелон [1][3];
Вначале записывается в квадратных скобках индекс строки, а затем столбца. Чтобы было больше понятно, распишем еще вагоны:
эшелон[0][0]=перловка;
эшелон[0][2]=просо;
эшелон[1][0]=ячмень;
Теперь рассмотрим работу одномерных и многомерных массивов в реальности.
Работа одномерного массива:
…и многомерного. Обратите внимание на альтернативную запись массивов, без оператора new и к тому же он сразу инициализируется значениями. Такой способ записи несложно применить и к одномерным массивам.
Можно много писать про массивы, но на самом деле все уже написал интернет, поэтому повторяться не будем и в заключение рассмотрим применяемые методы массивов.
И первый метод, который рассмотрим из класса Arrays пакета java.util, это метод алгоритма двоичного поиска нужного значения в массиве целых чисел. Примечательно, что без предварительной сортировки метод не работает. Поэтому вначале нужно применить к массиву метод сортировки.
Здесь мы применили два метода: сортировка массива sort(int[] a) и метод с алгоритмом двоичного поиска целых чисел binarySearch(int[] a, int key).
int[] copyOf(int[] original, int newLength) –метод копирует указанный массив original, заполняя нулями или срезая его размер в зависимости от параметра newLength. Рассмотрим работу данного метода с различными значениями параметра newLength. Обратите внимание на переменную length, которая возвращает размер массива.
static String toString(int[] a)
Метод toString выводит строковое представление содержимого массива. Если в предыдущем примере содержимое массива мы выводили с помощью цикла, о которых пойдет речь в ближайших статьях, то сейчас мы это сделаем с помощью метода toString(int[] a).
static boolean equals(int[] a, int[] a2)
Данный метод сравнивает два массива и выводит результат: true или false.
Подведем итог. Мы рассмотрели различные массивы и исследовали принцип работы некоторых их методов, и пришли к выводу, что массивы java представляют собой очень интересные объекты, качественно влияющие на разработку программных продуктов.