Массивы
Массивы в 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: вывод элементов массива с четным и нечетным индексом
В примере показано как вывести на экран элементы массива с четным и нечетным индексом.
Как вывести PHP массив
Примеры использования PHP функций и циклов для вывода всех элементов массива в окно браузера.
Функция print_r()
Функция print_r() выводит информацию о переменной в удобочитаемом виде. Чтобы отобразить пробелы и переносы результат функции нужно обернуть в тег <pre> .
Результат:
Функция var_dump()
Функция var_dump() отображает информацию о переменной, включая тип и значение.
Результат:
var_export()
Функция var_export() возвращает строковое представление переменной в виде полноценного PHP-кода.
Ввод и вывод массива
Ввод и вывод массива, то есть заполнение массива пользователем программы и выдачу содержимого массива пользователю, можно делать по-разному. Рассмотрим далее два варианта ввода/вывода массива в консольном приложении — scanf/printf и cin/cout.
Ввод/вывод массива с помощью функций scanf и prntif
Функция scanf предназначается для ввода данных с клавиатуры.
Для применения данной функции следует сначала подключить библиотеку языка C для операций ввода и вывода. Выглядит это следующим образом:
Вывод массива. Под выводом массива понимается вывод на экран значений элементов массива. Вывод элементов одномерного массива на экран.
Пример 7.1.Вычисление суммы 10 – и элементов массива.
Program Prog7_1;
a:array[1..10] of real;
writeln(‘Вычислить сумму элементов массива’);
writeln(‘Введите 10 элементов массива’);
for i:=1 to 10 do
writeln(‘Сумма элементов массива’,c);
writeln(‘Для окончания работы нажмитеEenter);
Пример 7.2.Вывод на экран номера и названия предметов учебного плана, хранящихся в массивеPred
Program prog7_2;
useswinCrt;
Pred:аггау[1..5] of string[20];
Pred[2] = ‘Управление качеством’;
Pred[5] = ‘Английский язык’;
for i:=1 to 5 do
Writeln( i:2, pred[i]);
Пример 7.3.Присваивание значений элементов одного массива другому.
Одномерные массивы могут присваивать свое значение целиком, если их типы эквивалентны:
program prog7_3;
uses WinCrt;
a,b:array[1..7] of real;
write (“ввод массива”)
for i:=1 to 7 do
for i:=1 to 7 do
Встроенная функция EOLN(EndOfLiNe) проверяет есть ли введенные символы, и если есть, то возвращаетtrue, если последний необработанный программой символ — «конец строки», соответствующий клавише <Enter>.
Если не введено ни одного символа, функция ожидает ввода строки с клавиатуры.>
Program Prog7_4;
uses WinCrt;
buf:array[l..SIZE] of char;
if NOT EOLN then
until EOLN or (n=SIZE);
writein(‘Длина введенной строки ‘, n,’символов.’);
Пример 7.5.Программа преобразования строчных букв в прописные.
Алгоритм преобразования строчных букв в прописные буквы основан на том, что код строчной буквы больше кода прописной. Код прописных букв от «а» до «п» больше кода соответствующих строчных букв на 32, а для букв от «р» до «я» -на 80 (см. таблицу кодов ASCII).>
Program Prog7_5;
Uses WinCrt;
buf:array [1 .. size] of char;
if not EOLN
until EOLN or (n=BSIZE);
for i:=1 to n do
case buf[i] of
for i:=1 to n do
write(buf[i] ) ;
В программе использована встроенная функция ORD, которая возвращает код (номер в таблицеASCII) символа, указанного в качестве ее аргумента.
Пример работы программы:
Преобразование строчных букв в прописные
ПРЕОБРАЗОВАНИЕ СТРОЧНЫХ БУКВ В ПРОПИСНЫЕ
Преобразование массива.
Пример 7.6. Перестановка элементов массива с номерамиnиm. Алгоритм реализуется присвоением промежуточной переменнойpзначения элемента массива с индексом n , элементу массива с индексом n значения элемента массива с индексом m, а элементу массива с индексом m значения промежуточной переменной p. >
Program Prog7_6;
Uses WinCrt;
a:array[1..4] of real;
for i:=1 to 4 do
for i:=1 to 4 do
Пример 7_7. Удаление из массива элемента с номеромk.
Алгоритм реализуется сдвигом всех элементов с k- номера
на одну позицию влево.
Program Prog7_7;
uses WinCrt;
a:array[1..7] of integer;
write(‘ номер удаляемого элемента массива = ‘);
writeln (‘ввод массива’)
for i:=1 to 7 do
for i:=k to 7 do
for i:=1 to 6 do
Пример 7.8.Перенос в конец массива элемента сk-ой позиции.
Алгоритм реализуется с помощью действий:
сохранение k- элемента в дополнительной переменнойp:
сдвиг элементов следующих за k-ым на одну позицию влево.
восстановление последнего значения из переменной p.
Program Progn;
uses WinCrt;
a:array[1..n] of integer;
write(‘ номер элемента = ‘);
writeln (‘ввод массива’)
for i:=1 to n do
for i:=k to n-1 do
for i:=1 to n do
Пример 7.9.Перенос в начало массива элемента сk-ой позиции.
Алгоритм реализуется с помощью следующих действий:
Ввод элементов массива.
Сохранение k-элемента в дополнительной переменнойp.
Сдвиг всех элементов до элемента с номером kвправо.
Записать на первое место значение из переменной р.>
Program Prog7_9;
uses WinCrt;
a:array[1..n] of integer;
write(‘ номер элемента = ‘);
writeln (‘ввод массива’)
for i:=1 to n do
for i:=k downto 2 do
for i:=1 to n do
Пример 7.10.Вывод температуры воздуха в течение недели и вычисление
среднего значения. Для подсказок используется массив строк dey.
dey:аггау[1..7]of string[11];
temper:аггау[1..7]ofгеа1; <температура)
sred:геа1; (средняя температура за неделю>
dey[5]:=‘Пятница’;
Writeln(‘Задайте температуру воздуха за неделю.’);
for i:=1 to 7 do
read(temper [1]) ;
Wrtiteln(‘Средняя температура за неделю: ‘,sred:6:2) ;
Сортировка массива.Под сортировкой массива подразумевается процесс перестановки элементов с целью упорядочивания их в соответствии с каким-либо критерием.
Например, если имеется массив целых чисел а , то после сортировки по возрастанию должно выполняться условие:
где size- верхняя граница индекса массива.
Так как можно сравнивать переменные типов integer,real,char,string, то можно сортировать массивы этих типов.
В информационных системах задача сортировки используется как предварительный этап задачи поиска, так как поиск в упорядоченном (отсортированном) массиве проводится намного быстрее, чем в
Существует много методов (алгоритмов) сортировки массивов. Здесь мы рассмотрим два метода:
метод прямого выбора
метод прямого обмена
Сортировка методом прямого выбора. Алгоритм сортировки массива по возрастанию методом прямого выбора может быть представлен так:
Просматривая массив от первого элемента, найти минимальный и
поместить его на место первого элемента, а первый на место минимального.
Просматривая массив от второго элемента, найти минимальный
поместить его на место второго элемента, а второй на место минимального.
3. И так далее до предпоследнего элемента.
Ниже представлена программа сортировки массива целых чисел по возрастанию. Для демонстрации процесса сортировки программа выводит массив после каждого обмена элементов.
Program Prog7_3;
uses WinCrt;
а:аrrау[1..size] of integer;
writeln (‘Сортировка массива.’);
write(‘Введите’,size:3,’целых числа через пробел и нажмите<Enter>’);
for k:=1 to size do read(a[k]);
for i:=1 to size-1 do
for j:=i+1 to size do
if a[i]>a[j] then
for k:=1 to size do write(a[k]), ‘ ‘);
writeln (‘Массив отсортирован.’);
Пример работы программы:
Введите 5 целых в одной строке через пробел и нажмите <Еnter>
Сортировка методом прямого обмена. В основе алгоритма — обмен значениями соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением сдвигаются к началу массива (всплывают), а элементы с большим значением — к концу массива (тонут), поэтому этот метод иногда называют «пузырьковым». Этот процесс повторяется на единицу меньше раз, чем элементов в массиве.
На рис. 7.1. показан пример процесса сортировки массива. Буквой («а») обозначено исходное состояние массива и перестановки на первом проходе, буквой («б») — состояние после перестановок на первом проходе и перестановки на втором проходе и так далее. Ниже представлена программа сортировки массива целых чисел по возрастанию. Программа выводит массив после каждого цикла обмена.

i=1
3