Java предоставляет структуру данных, массив , в котором хранится последовательная коллекция фиксированного размера элементов одного типа. Массив используется для хранения коллекции данных, но часто более полезно думать о массиве как о коллекции переменных одного типа.
Вместо того, чтобы объявлять отдельные переменные, такие как number0, number1, … и number99, вы объявляете одну переменную массива, такую как числа, и используете числа [0], числа [1] и …, числа [99] для представления отдельные переменные.
В этом руководстве рассказывается, как объявлять переменные массива, создавать массивы и обрабатывать массивы с использованием индексированных переменных.
Объявление переменных массива
Чтобы использовать массив в программе, необходимо объявить переменную для ссылки на массив и указать тип массива, на который может ссылаться переменная. Вот синтаксис для объявления переменной массива —
Синтаксис
dataType[] arrayRefVar; // preferred way. or dataType arrayRefVar[]; // works but not preferred way.
Примечание . Стиль dataType [] arrayRefVar является предпочтительным. Стиль dataType arrayRefVar [] происходит от языка C / C ++ и был принят в Java для поддержки программистов на C / C ++.
пример
Следующие фрагменты кода являются примерами этого синтаксиса —
double[] myList; // preferred way. or double myList[]; // works but not preferred way.
Создание массивов
Вы можете создать массив, используя оператор new со следующим синтаксисом:
Синтаксис
arrayRefVar = new dataType[arraySize];
Вышеупомянутое утверждение делает две вещи —
-
Он создает массив, используя новый dataType [arraySize].
-
Он присваивает ссылку на вновь созданный массив переменной arrayRefVar.
Он создает массив, используя новый dataType [arraySize].
Он присваивает ссылку на вновь созданный массив переменной arrayRefVar.
Объявление переменной массива, создание массива и присвоение ссылки на массив переменной можно объединить в одном выражении, как показано ниже:
dataType[] arrayRefVar = new dataType[arraySize];
В качестве альтернативы вы можете создать массивы следующим образом —
dataType[] arrayRefVar = {value0, value1, ..., valuek};
Доступ к элементам массива осуществляется через индекс . Индексы массива основаны на 0; то есть они начинаются с 0 до arrayRefVar.length-1 .
пример
Следующий оператор объявляет переменную массива myList, создает массив из 10 элементов двойного типа и присваивает его ссылку на myList —
double[] myList = new double[10];
Следующая картинка представляет массив myList. Здесь myList содержит десять двойных значений и индексы от 0 до 9.
Обработка массивов
При обработке элементов массива мы часто используем цикл for или цикл foreach, поскольку все элементы в массиве относятся к одному типу, а размер массива известен.
пример
Вот полный пример, показывающий, как создавать, инициализировать и обрабатывать массивы —
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // Print all the array elements for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } // Summing all elements double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); // Finding the largest element double max = myList[0]; for (int i = 1; i < myList.length; i++) { if (myList[i] > max) max = myList[i]; } System.out.println("Max is " + max); } }
Это даст следующий результат —
Выход
1.9 2.9 3.4 3.5 Total is 11.7 Max is 3.5
Петли foreach
В JDK 1.5 появился новый цикл for, известный как цикл foreach или расширенный цикл for, который позволяет последовательно обходить весь массив без использования индексной переменной.
пример
Следующий код отображает все элементы в массиве myList —
public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; // Print all the array elements for (double element: myList) { System.out.println(element); } } }
Это даст следующий результат —
Выход
1.9 2.9 3.4 3.5
Передача массивов в методы
Так же, как вы можете передавать значения примитивного типа в методы, вы также можете передавать массивы в методы. Например, следующий метод отображает элементы в массиве int —
пример
public static void printArray(int[] array) { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } }
Вы можете вызвать его, передав массив. Например, следующий оператор вызывает метод printArray для отображения 3, 1, 2, 6, 4 и 2 —
пример
printArray(new int[]{3, 1, 2, 6, 4, 2});
Возвращение массива из метода
Метод также может возвращать массив. Например, следующий метод возвращает массив, который является обращением другого массива —
пример
public static int[] reverse(int[] list) { int[] result = new int[list.length]; for (int i = 0, j = result.length - 1; i < list.length; i++, j--) { result[j] = list[i]; } return result; }
Класс Массивов
Класс java.util.Arrays содержит различные статические методы для сортировки и поиска в массивах, сравнения массивов и заполнения элементов массива. Эти методы перегружены для всех примитивных типов.
public static int binarySearch (Object [] a, Ключ объекта)
Выполняет поиск в указанном массиве Object (Byte, Int, double и т. Д.) Указанного значения с использованием алгоритма двоичного поиска. Массив должен быть отсортирован до выполнения этого вызова. Возвращает индекс ключа поиска, если он содержится в списке; в противном случае возвращается (- (точка вставки + 1)).
public static логическое equals (long [] a, long [] a2)
Возвращает true, если два указанных массива long равны друг другу. Два массива считаются равными, если оба массива содержат одинаковое количество элементов, и все соответствующие пары элементов в двух массивах равны. Это возвращает истину, если два массива равны. Тот же метод может использоваться всеми другими примитивными типами данных (Byte, short, Int и т. Д.)
public static void fill (int [] a, int val)
Назначает указанное значение int каждому элементу указанного массива целых. Тот же метод может использоваться всеми другими примитивными типами данных (Byte, short, Int и т. Д.)
общедоступная статическая сортировка void (Object [] a)
Сортирует указанный массив объектов в порядке возрастания в соответствии с естественным порядком его элементов. Тот же метод может использоваться всеми другими примитивными типами данных (Byte, short, Int и т. Д.)