logo

Масиви в 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.
  • Фіксована довжина: Після створення масиву його розмір фіксується; ми не можемо це змінити.
примітивний_масив_' title=Примітивне представлення масиву в Java елемент масиву оновлення' loading='lazy' title=Непримітивне представлення масиву в Java

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

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

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

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



відсортований список масивів у java

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

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

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

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

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

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

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

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

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

рядок jsonobject

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

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

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

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

траверс-масив' loading='lazy' title=

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

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

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

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

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

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

Програма 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, а їхні посилання мають бути призначені елементам масиву.

10 мл до унцій
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]);  } } 

Вихід:

' loading='lazy' title=Виведення елементів поза розміром масиву

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

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

приклад:

Перетворення рядка в int у java
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