Учебники

Java — Массивы

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.

Java Array

Обработка массивов

При обработке элементов массива мы часто используем цикл for или цикл foreach, поскольку все элементы в массиве относятся к одному типу, а размер массива известен.

пример

Вот полный пример, показывающий, как создавать, инициализировать и обрабатывать массивы —

Live Demo

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 —

Live Demo

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 и т. Д.)