Масиви в Java

Масиви в Java

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

  • Масиви в Java є об’єктами, як і всі інші об’єкти в масивах Java, неявно успадковані від класу java.lang.Object. Це дозволяє вам викликати методи, визначені в Object (такі як toString() equals() і hashCode()).
  • Масиви мають вбудовану властивість length, яка визначає кількість елементів у масиві
Java
   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      // initializing array      int  []     arr     =     {  40       55       63       17       22  };      // size of array      int     n     =     arr  .  length  ;      // traversing array      for     (  int     i     =     0  ;     i      <     n  ;     i  ++  )      System  .  out  .  print  (  arr  [  i  ]     +     ' '  );      }   }   

Вихід
40 55 63 17 22  

Ключові особливості масивів

  • Зберігати примітиви та об’єкти: Масиви Java можуть містити як примітивні типи (наприклад, int char boolean тощо), так і об’єкти (наприклад, String Integer тощо).
  • Безперервний розподіл пам'яті Коли ми використовуємо масиви примітивних типів, елементи зберігаються в безперервних розташуваннях. Для непримітивних типів посилання на елементи зберігаються в безперервних розташуваннях.
  • Нульове індексування: Перший елемент масиву має індекс 0.
  • Фіксована довжина: Після створення масиву його розмір фіксується; ми не можемо це змінити.
примітивний_масив_Примітивне представлення масиву в Java елемент масиву оновленняНепримітивне представлення масиву в Java

Основи роботи з масивами в Java

1. Оголошення масиву

Загальна форма оголошення масиву така 

// Спосіб 1:
int arr[];

// Спосіб 2:
int[] arr;

Тип елемента визначає тип даних кожного елемента, який складається з масиву. Подібно до масиву цілих чисел, ми також можемо створити масив інших примітивних типів даних, таких як char float double тощо, або визначених користувачем типів даних (об’єктів класу).

Примітка: Це те, як ми можемо створити змінну масиву. Фактичного масиву не існує. Він просто повідомляє компілятору, що ця змінна (Int Array) буде містити масив цілочисельного типу.

2. Ініціалізація масиву в Java

При оголошенні масиву створюється лише посилання на масив. Ми використовуємо new для виділення масиву заданого розміру.

int arr[] = новий int[розмір];

  • Оголошення масиву зазвичай є статичним, але якщо розмір не визначено, розмір масиву має динамічний розмір.
  • Пам'ять для масивів завжди динамічно розподіляється (у сегменті купи) у Java. Це відрізняється від C/C++, де пам’ять може бути виділена статично або динамічно.
  • Елементи в масиві, виділеному new, будуть автоматично ініціалізовані нулем (для числових типів), false (для логічних типів) або null (для посилальних типів).

Літерал масиву в Java

У ситуації, коли розмір масиву та змінні масиву вже відомі, можна використовувати літерали масиву. 

// Оголошення літералу масиву
int[] arr = new int[]{ 12345678910 };

  • Довжина цього масиву визначає довжину створеного масиву.
  • Немає необхідності писати нову частину int[] в останніх версіях Java.

3. Змініть елемент масиву

Щоб змінити елемент, призначте нове значення певному індексу. Індекс починається з 0 і закінчується на (загальний розмір масиву) -1.

траверс-масив

// Зміна першого елемента на 90
arr[0] = 90;

4. Довжина масиву

Ми можемо отримати довжину масиву за допомогою властивості length:

// Отримання довжини масиву
int n = arr.length;

5. Доступ до всіх елементів масиву та їх оновлення

  • До всіх елементів масиву можна отримати доступ за допомогою Java for Loop.
  • Доступ до кожного елемента в масиві здійснюється через його індекс.
ВихідДоступ і оновлення всіх елементів масиву

Програма Java для ілюстрації створення масиву цілих чисел поміщає деякі значення в масив і друкує кожне значення в стандартний вивід

Java
   class   Geeks     {      public     static     void     main  (  String  []     args  )      {      // declares an Array of integers.      int  []     arr  ;      // allocating memory for 5 integers.      arr     =     new     int  [  5  ]  ;      // initialize the elements of the array      // first to last(fifth) element      arr  [  0  ]     =     2  ;      arr  [  1  ]     =     4  ;      arr  [  2  ]     =     8  ;      arr  [  3  ]     =     12  ;      arr  [  4  ]     =     16  ;      // accessing the elements of the specified array      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      System  .  out  .  println  (  'Element at index '     +      i     +     ' : '     +     arr  [  i  ]  );      }   }   

Вихід
Element at index 0 : 2 Element at index 1 : 4 Element at index 2 : 8 Element at index 3 : 12 Element at index 4 : 16  

Масиви об'єктів в Java

Масив об’єктів створюється як масив елементів даних примітивного типу

приклад : Тут ми беремо клас студента та створюємо масив Student із п’ятьма об’єктами Student, які зберігаються в масиві. Об’єкти Student мають бути створені за допомогою конструктора класу Student, а їхні посилання мають бути призначені елементам масиву.

Java
   class   Student     {      public     int     roll_no  ;      public     String     name  ;          Student  (  int     roll_no       String     name  ){      this  .  roll_no     =     roll_no  ;      this  .  name     =     name  ;      }   }   public     class   Geeks     {      public     static     void     main  (  String  []     args  ){          // declares an Array of Student      Student  []     arr  ;      // allocating memory for 5 objects of type Student.      arr     =     new     Student  [  5  ]  ;      // initialize the elements of the array      arr  [  0  ]     =     new     Student  (  1       'aman'  );      arr  [  1  ]     =     new     Student  (  2       'vaibhav'  );      arr  [  2  ]     =     new     Student  (  3       'shikar'  );      arr  [  3  ]     =     new     Student  (  4       'dharmesh'  );      arr  [  4  ]     =     new     Student  (  5       'mohit'  );      // accessing the elements of the specified array      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      System  .  out  .  println  (  'Element at '     +     i     +     ' : { '      +     arr  [  i  ]  .  roll_no     +     ' '      +     arr  [  i  ]  .  name  +  ' }'  );      }   }   

Вихід
Element at 0 : { 1 aman } Element at 1 : { 2 vaibhav } Element at 2 : { 3 shikar } Element at 3 : { 4 dharmesh } Element at 4 : { 5 mohit }  

Що станеться, якщо ми спробуємо отримати доступ до елементів поза розміром масиву?

JVM викидає ArrayIndexOutOfBoundsException, щоб вказати, що доступ до масиву здійснювався за допомогою недопустимого індексу. Індекс є або від’ємним, або більшим або дорівнює розміру масиву.

Наведений нижче код показує, що станеться, якщо ми спробуємо отримати доступ до елементів поза розміром масиву:

Java
   public     class   Geeks     {      public     static     void     main  (  String  []     args  )      {      int  []     arr     =     new     int  [  4  ]  ;      arr  [  0  ]     =     10  ;      arr  [  1  ]     =     20  ;      arr  [  2  ]     =     30  ;      arr  [  3  ]     =     40  ;      System  .  out  .  println  (      'Trying to access element outside the size of array'  );      System  .  out  .  println  (  arr  [  5  ]  );      }   }   

Вихід:

Виведення елементів поза розміром масиву

Передача масивів у методи

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

приклад:

Java
   public     class   Geeks     {      // Driver method      public     static     void     main  (  String     args  []  )      {      int     arr  []     =     {     3       1       2       5       4     };      // passing array to method m1      sum  (  arr  );      }      public     static     void     sum  (  int  []     arr  )      {      // getting sum of array values      int     sum     =     0  ;      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      sum     +=     arr  [  i  ]  ;      System  .  out  .  println  (  'sum of array values : '     +     sum  );      }   }   

Вихід
sum of array values : 15  

Пояснення

  • Ця програма на Java демонструє, як передати масив у метод.
  • Цілочисельний масив arr оголошується та ініціалізується в основному методі.
  • Метод sum() викликається з arr як аргументом.
  • Усередині методу sum() усі елементи масиву додаються за допомогою циклу for.
  • Остаточна сума потім друкується на консолі.

Повернення масивів із методів

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

приклад:

Java
   class   Geeks     {      // Driver method      public     static     void     main  (  String     args  []  )      {      int     arr  []     =     m1  ();      for     (  int     i     =     0  ;     i      <     arr  .  length  ;     i  ++  )      System  .  out  .  print  (  arr  [  i  ]     +     ' '  );      }      public     static     int  []     m1  ()      {      // returning array      return     new     int  []     {     1       2       3     };      }   }   

Вихід
1 2 3  

Переваги Java Arrays

  • Ефективний доступ: Доступ до елемента за його індексом є швидким і має постійну часову складність O(1).
  • Керування пам'яттю: Масиви мають фіксований розмір, що робить керування пам’яттю простим і передбачуваним.
  • Організація даних: Масиви допомагають структурувати дані, що полегшує керування пов’язаними елементами.

Недоліки Java Arrays

  • Фіксований розмір: Після створення масиву його розмір не можна змінити, що може призвести до втрати пам’яті, якщо розмір переоцінений, або недостатнього обсягу пам’яті, якщо він недооцінений.
  • Однорідність типу: Масиви можуть зберігати лише елементи одного типу даних, що може потребувати додаткової обробки для змішаних типів даних.
  • Вставка та видалення: Вставлення або видалення елементів, особливо в середині масиву, може бути дорогим, оскільки може знадобитися переміщення елементів.

Пов’язані публікації

  • Jagged Array в Java
  • Цикл for-each в Java
  • Клас масивів в Java

Кращі Статті

Категорія