3.3. Масиви

Масив - це впорядкований набір однотипних елементів, на які посилаються по спільному імені. Це доволі зручний засіб групування інформації. Масиви можна створювати з елементів будь-якого типу. До конкретного елементу в масиві звертаються по індексу (номеру). Вони можуть бути як одновимірні так і багатовимірні.

Одновимірні масиви

Одновимірні масиви - це список однотипних елементів. Загальний формат оголошення такого масиву:

1
2
// загальний вид оголошення масиву 
тип-елементів назва-масиву[];

Для того, щоб масив почав існувати необхідно виділити під нього пам'ять, за допомогою операції new:

1
2
// ініціалізація масиву 
назва-масиву = new тип-елементів [розмір];

де розмір - планована кількість елементів у масиві. Або оголошувати масив одразу наступним чином:

1
2
// ініціалізація масиву 
int month_days[] =new int[12];

Відбувається виділення пам'яті під масив і ініціалізації елементів масиву нулями. В подальшому можна напряму звертатися до елементів масиву вказуючи індекс у квадратних дужках. Нумерація елементів в масиві в java відбувається з нуля. Тобто в наведеному прикладі звернення до першого(нульового) елемента - month_days[0], а до останнього - month_days[11]. Java не дозволить програмі звернутися поза межі масиву, щоправда помилка буде вказана лише на етапі виконання програми через викидання винятку(виключення).

Масиви також можна ініціалізувати зразу ж при їхньому оголошенні, не використовуючи операції new, аналогічно як це відбувається при роботі з простими типами даних.

1
2
int month_days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 
//оголошуємо та ініціалізуємо масив

Наступний приклад демонструє знаходження максимального числа в одновимірному масиві.

1
2
3
4
5
6
7
8
9
10
public class ArrayMax {
  public static void main(String[] args) {
    double array[]={1.1, 2.2, 1.1, 3.2, 1.2, 2.1};
    double max=array[0];
    for (int i=0;i<6;i++){
      if (max<array[i]) max=array[i];
      }
    System.out.println ("Максимальне число в масиві: "+max);
  }
}

Багатовимірні масиви

Багатовимірні масиви по суті – це масив масивів. Робота з багатовимірними масивами подібна до роботи з одновимірними. Відмінність лише в тому, що використовуються додаткові квадратні дужки. Переважно використовуються двовимірні масиви, які служать для роботи з табличними даними та трьохвимірні масиви. Двовимірний масив та трьохвимірний, можна оголосити наступним чином:

1
2
int twoD[][] = new int [4][5]; //створення масиву 4x5 int 
threeD[][][]=new int[5][5][5]; //створення масиву 5х5х5

Для двовимірного лівий індекс означає номер рядка, а правий номер стовпця. Трьохвимірний масив можна уявити у вигляді куба. Крім номера рядка і номера стовпця, додається ще індекс елемента вглибину.

Наступна програма створює масив 5 на 4, заповнює його випадковими числами і виводить на екран:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Random;// імпортуємо клас Random
public class RandomArray {
  public static void main(String[] args) {
    int m=5,n=4;//оголошуємо і ініцілізуємо змінні з розмірами масиву
    int Array[][] = new int [m] [n];//оголошуємо і ініціалізуємо масив
    Random generator = new Random();// створюємо генератор випадкович чисел
    int gn;                 //змінна в яку буде записуватися згенероване генератором число
 /***заповнюємо масив випадковими числами***/
    for (int i=0; i<m; i++)//проходимось по стовпцях
      for (int j=0; j<n; j++){//проходимось по рядках
        gn=generator.nextInt(100);//генерація випадкового числа від 0 до 100;
        Array[i][j]=gn;//записуємо згенероване випадкове число
        }
/***Виводимо результат***/
     for (int i=0; i<m; i++){
       for (int j=0; j<n; j++)// зверніть увагу на відсутність фігурної дужки
         System.out.print (Array[i][j]+"    ");//даний рядок 
                                          //відноситься до масиву по j
         System.out.println ();//виводимо символи переводу каретки і нового рядка
//після кожного проходження стовпцевих елементів рядка
    }
  }
}