Масиви в Java
У Java масив є важливою лінійною структурою даних, яка дозволяє нам зберігати кілька значень одного типу.
- Масиви в Java є об’єктами, як і всі інші об’єкти в масивах Java, неявно успадковані від класу java.lang.Object. Це дозволяє вам викликати методи, визначені в Object (такі як toString() equals() і hashCode()).
- Масиви мають вбудовану властивість length, яка визначає кількість елементів у масиві
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, а їхні посилання мають бути призначені елементам масиву.
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