- Массивы
- Содержание
- Объявление массива
- Пример
- Создание массива
- Пример
- Работа с массивами
- Пример
- Цикл foreach
- Пример
- Передача массива в метод
- Возврат массива из метода
- Методы для массива
- Пример 1: создание, объявление переменных, определение (выделение памяти) и инициализация массива
- Пример 2: длина массива
- Пример 3: максимальный элемент массива
- Пример 4: минимальный элемент массива
- Пример 5: сумма массива
- Пример 6: вывод массива
- Пример 7: вывод четных и нечетных элементов массива
- Пример 8: вывод элементов массива с четным и нечетным индексом
- Java-массив: что это такое и с чем его едят?
- Как узнать длину массива
- Инициализируем массив, работаем с его элементами
- Выводим массив в консоль
- Многомерные Java-массивы
- Java.util.Arrays: готовые решения для обработки массивов
- Заключение: что мы узнали о java-массивах
Массивы
Содержание
Массивы в Java — это структура данных, которая хранит упорядоченные коллекции фиксированного размера элементов нужного типа. В Java массив используется для хранения коллекции данных, но часто бывает полезно думать о массиве как о совокупности переменных одного типа.
Вместо объявления отдельных переменных, таких как number0, number1, . и number99, Вы объявляете одну переменную массива, например, numbers и используете numbers[0], numbers[1], . и numbers[99], для отображения отдельных переменных.
Данная статья ознакомит Вас как в Java объявить массив переменных, создать и обрабатывать массив с помощью индексированных переменных.
Объявление массива
Чтобы использовать массив в программе, необходимо объявить переменную для ссылки на массив, и Вы должны указать тип массива, который может ссылаться на переменную. Синтаксис для объявления переменной массива:
Примечание: стиль dataType[] arrayRefVar является предпочтительным. Стиль dataType arrayRefVar[] происходит из языка C/C++ и был принят в Java для C/C++-программистов.
Пример
Следующие фрагменты кода примеры использования данного синтаксиса:
Создание массива
В Java создать массив можно с помощью оператора new с помощью следующего синтаксиса:
Вышеуказанное объявление делает две вещи:
- Создает массив, используя new dataType[arraySize];
- Ссылка на недавно созданный массив присваивается переменной arrayRefVar.
Объявление переменной, создание и присвоение переменной ссылки массива могут быть объединены в одном операторе, как показано ниже:
В качестве альтернативы массивы в Java можно создавать следующим образом:
Элементы массива доступны через индекс. Отсчет индексов ведется от 0; то есть они начинают от 0 и до arrayRefVar.length-1.
Пример
Следующий оператор объявляет массив переменных myList, создает массив из 10 элементов типа double и присваивает ссылку myList:
Изображение отображает массив myList. Здесь myList имеет десять значений double и индексы от 0 до 9.
Работа с массивами
При работе с элементами массива, часто используют цикл for или цикл foreach потому, что все элементы имеют одинаковый тип и известный размер.
Пример
Полный пример, показывающий, как создавать, инициализировать и обработать массив:
Получим следующий результат:
Цикл foreach
JDK 1.5 представила новый цикл for, известный как цикл foreach или расширенный цикл for, который позволяет последовательно пройти весь массив без использования индекса переменной.
Пример
Следующий код отображает все элементы в массиве myList:
Получим следующий результат:
Передача массива в метод
Также как можно передать значение примитивного типа в метод, можно также передать массив в метод. Например, следующий метод отображает элементы в int массиве:
Его можно вызвать путем передачи массива. Например, следующий оператор вызывает метод printArray для отображения 3, 1, 2, 6, 4 и 2:
Возврат массива из метода
Метод может также возвращать массив. Например, метод, показанный ниже, возвращает массив, который является реверсирование другого массива:
Методы для массива
Класс java.util.Arrays содержит различные статические методы для поиска, сортировки, сравнения и заполнения элементов массива. Методы перегружаются для всех примитивных типов.
№ | Описание |
1 | public static int binarySearch(Object[] a, Object key) Ищет заданный массив объектов (byte, int, double, и т.д.) для указанного значения, используя алгоритм двоичного поиска. Массив должен быть отсортирован до выполнения этого вызова. Это возвращает индекс ключа поиска, если он содержится в списке; в противном случае (-(точка вставки + 1). |
2 | public static boolean equals(long[] a, long[] a2) Возвращает значение true, если два указанных массивах равны друг другу. Два массива считаются равными, если оба массива содержат одинаковое количество элементов, и все соответствующие пары элементов в двух массивах равны. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). |
3 | public static void fill(int[] a, int val) Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). |
4 | public static void sort(Object[] a) Этот метод сортировки сортирует указанный массив объектов в порядке возрастания, в соответствии с естественным порядком его элементов. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.). |
Пример 1: создание, объявление переменных, определение (выделение памяти) и инициализация массива
В качестве примера возьмем тип данных int. Вы же можете использовать любой другой тип данных.
Пример 2: длина массива
Узнать размер массива в Java можно с помощью метода length(). Данный метод позволяет определить размерность массива.
Получим следующий результат:
Пример 3: максимальный элемент массива
Простые способы для того, чтобы найти максимальное число в массиве в Java. Сперва воспользуемся методом Math.max().
Получим следующий результат:
Ещё один пример нахождения максимального числа в массиве в Java. Здесь мы не будем использовать какие-либо методы.
Получим следующий результат:
Пример 4: минимальный элемент массива
Написанный ниже код практически ничем не отличается от кода, описанного в примере 3. Он в точности наоборот, просто здесь мы ищем минимальное число в массиве в Java. В первом способе воспользуемся методом Math.min().
Получим следующий результат:
Ещё один пример нахождения максимального числа в массиве в Java. Здесь мы не будем использовать какие-либо методы.
Получим следующий результат:
Пример 5: сумма массива
В этом примере рассмотрим как получить сумму элементов массива в Java.
Получим следующий результат:
А в этом примере используем улучшенный цикл for, чтобы найти сумму массива.
Получим следующий результат:
Пример 6: вывод массива
В данном примере рассмотрим как вывести массив на экран в Java.
Получим следующий результат:
Пример 7: вывод четных и нечетных элементов массива
В примере показано как вывести четные и нечетных элементы массива в Java.
Получим следующий результат:
Пример 8: вывод элементов массива с четным и нечетным индексом
В примере показано как вывести на экран элементы массива с четным и нечетным индексом.
Получим следующий результат:
Источник
Java-массив: что это такое и с чем его едят?
Для начала давайте разберемся с определением. Массив — это некая конструкция, с полями (переменными) одинакового типа, предназначенная для хранения информации. Этакий контейнер с нумерованными ячейками внутри, в каждую из которых мы помещаем данные. Причем в одной ячейке может быть только одно значение. Добраться до информации, хранящейся там, можно по номеру ячейки (индексу).
В языке Java массив может содержать только однотипные элементы. Массив int будет содержать целочисленные значения, в string будут строки, а массив, наполненный элементами определенного класса, будет хранить объекты этого класса.
Вывод: в Java-массиве нельзя смешивать типы полей.
Рассмотрим общие формы для объявления одномерного массива.
Объявление массива | Пример | Комментарий |
type variable_name [] | int anArray [] | Java-стиль |
type [] variable_name | int [] anArray | Стиль, перекочевавший в Java из языка программирования С |
При использовании такого объявления мы должны знать, что фактического массива пока не существует. Тут мы просто отправляем сообщение компилятору, о том, что поле anArray когда-нибудь будет приспособлено под массив с целыми числами. Чтобы связать anArray с реальным целочисленным массивом, нужно объявить его с помощью ключевого слова new :
В примере числовое значение в квадратных скобках показывает количество слотов под элементы массива. В нашем случае мы выделяем под массив десять ячеек памяти.
Примечание: ячейкам в массиве, выделенным при помощи ключевого слова new , будут автоматически присвоены значения: 0 (для числового типа), false (для логического) и null (для ссылок).
А вот другой способ, предоставляющий возможность устанавливать значения в массив непосредственно при его создании:
Здесь мы инициализировали пятиэлементный массив, содержащий числа от 1 до 5. При использовании этого метода нам не нужно указывать его длину.
Как узнать длину массива
Мы с вами разобрались, что длиной массива является число ячеек, выделенное для хранения данных, и эту длину невозможно будет изменить, когда массив уже создан. В Java счет элементов по порядку в массиве начинается не с единицы, а с нуля.
Как узнать длину массива
Чтобы узнать длину нашего массива, используем его свойство length . Например:
Инициализируем массив, работаем с его элементами
Теперь мы знаем, что такое массив, но как его использовать — пока непонятно. Как загружать в него информацию, а потом ее оттуда извлекать? Давайте разбираться.
В широком смысле массив — это самая важная структура данных в программировании. Сам компьютер — это не что иное, как набор массивов. Байт — это массив из восьми двоичных разрядов, а строка — это массив символов.
Разработчики используют массивы, потому что они работают быстро и позволяют напрямую обращаться к данным отдельного элемента за один компьютерный цикл независимо от размера массива.
Из-за операционной системы, виртуальной памяти и других факторов для извлечения элемента из массива может потребоваться несколько больше, чем один фактический компьютерный цикл. Но время извлечения первого элемента такое же, как и 100-го элемента и 500-тысячного. Никакая другая созданная нами структура данных не может быть быстрее, чем массив. Все «продвинутые» системы реализованы с их использованием.
Теперь давайте выясним особенности работы с этой полезной штукой. При объявлении создается массив в каждой ячейке которого — данные по умолчанию (это мы разобрали). Чтобы записать туда необходимые нам данные, нужно провести обряд инициализации, то есть присвоить каждой ячейке определенное значение.
Например, создадим массив, содержащий в себе четыре стороны света, и заполним его значениями:
Мы используем индексы для доступа к ячейкам массива, число в скобках обозначает каждую конкретную позицию. Если переданный при доступе к ячейке индекс — отрицательный или превышает длину массива, Java выдаст исключение ArrayIndexOutOfBoundException .
Теперь совместим инициализацию с объявлением:
И уберем оператор new , тем самым упростив запись:
Выводим массив в консоль
Есть несколько способов перебора массивов, один из них — циклический, например, с помощью цикла for :
Многомерные Java-массивы
Массивы, у которых только один индекс называется одномерным, мы уже рассмотрели. Но в них можно помещать не только примитивные типы данных и ссылки на объекты, но и другие массивы. В таком случае их называют многомерными.
Давайте на примере выясним, что они из себя представляют. Предположим, нам нужен массив для хранения числа имеющихся свободных мест в кинотеатре. Вот визуальное представление того, о чем я говорю:
Структура многомерного массива в Java (здесь мы видим свободные места в кинотеатре)
Конечно в реальной жизни кинотеатр был бы больше, но этот нам как раз подойдет в качестве примера.
0 — означает, что место доступно, 1 — что занято. Мы также могли бы добавить еще и 2 для зарезервированных мест и так далее. Но пока ограничимся более простым примером.
Java не предоставляет никакой специальной поддержки для многомерных массивов, но мы можем легко объявить их как массив массивов. Это будет выглядеть вот так:
Первое число указывает количество столбцов, второе — количество строк. Все числовые массивы в Java автоматически инициализируются нулевыми значениями после объявления. Мы только что создали таблицу, полную нулей.
Теперь давайте заполним кинозал единицами, как на картинке выше. Для создания строки из единиц используем несколько циклов for . Чтобы открыть доступ к элементам 2D-массива, мы должны ввести координаты столбцов и строк:
Нужно иметь в виду, что если мы запросим cinema.length , он будет содержать количество столбцов (длину внешнего массива, представляющего столбцы). Чтобы определить количество строк (длину внутреннего массива), необходимо запросить cinema [0].length . Обратите внимание, что для работы должен быть хотя бы один столбец.
Мы будем вкладывать циклы по порядку, чтобы внешний цикл проходил по строкам, а внутренний — по столбцам текущей строки. После вывода строки в консоль мы должны разорвать ее, ведь оба цикла должны иметь разные управляющие переменные:
Иногда может быть полезно создать массив с большим количеством измерений. Например, трехмерный. Вернемся к примеру с кинотеатром. Теперь представим, что в нем несколько этажей. Схематично это будет выглядеть так:
Давайте создадим 3D-массив:
Доступ к элементам приведенного выше трехмерного массива мы можем получить, как и раньше, через индекс, но теперь нам нужно ввести три координаты:
В такой ситуации, если мы запросим cinemas[0][0].length , то получим количество этажей.
Java.util.Arrays: готовые решения для обработки массивов
Наиболее часто используемые операции по работе с java-массивами:
- сортировка;
- поиск нужного элемента;
- преобразование массива в строку.
Одним из самых удобных способов решения такого рода задач является использование класса Arrays пакета java.util. Рассмотрим на примере их реализацию:
Заключение: что мы узнали о java-массивах
- Массив — это объект-контейнер, содержащий в себе установленное при создании количество значений определенного типа, которое не может быть впоследствии изменено.
- Нумерация элементов массива начинается с нуля.
- Доступ к ячейкам массива легко получить по его индексу.
- Наиболее удобные инструменты для обработки массивов предоставляет класс Java.util.Arrays.
Highload нужны авторы технических текстов. Вы наш человек, если разбираетесь в разработке, знаете языки программирования и умеете просто писать о сложном!
Откликнуться на вакансию можно здесь .
Источник