В Java масивът е важна линейна структура от данни, която ни позволява да съхраняваме множество стойности от един и същи тип.
- Масивите в Java са обекти, като всички други обекти в Java масивите имплицитно наследяват от класа java.lang.Object. Това ви позволява да извиквате методи, дефинирани в Object (като toString() equals() и hashCode()).
- Масивите имат вградено свойство за дължина, което предоставя броя на елементите в масива
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 [];низ към int java// Метод 2:
int[] arr;
Типът на елемента определя типа данни на всеки елемент, който съставлява масива. Подобно на масив от цели числа, можем също да създадем масив от други примитивни типове данни като char float double и т.н. или дефинирани от потребителя типове данни (обекти от клас).
Забележка: Това е просто начинът, по който можем да създадем променлива в масив, но реален масив не съществува. Той просто казва на компилатора, че тази променлива (int Array) ще съдържа масив от целочислен тип.
2. Инициализиране на масив в Java
Когато се декларира масив, се създава само препратка към масив. Използваме new, за да разпределим масив с даден размер.
int arr[] = нов int[размер];
- Декларацията на масива обикновено е статична, но ако размерът не е дефиниран, масивът е с динамичен размер.
- Паметта за масиви винаги се разпределя динамично (в сегмент на купчина) в Java. Това е различно от C/C++, където паметта може да бъде или статично разпределена, или динамично разпределена.
- Елементите в масива, разпределени от new, автоматично ще бъдат инициализирани на нула (за числови типове), false (за булеви) или null (за референтни типове).
Литерал на масив в Java
В ситуация, в която размерът на масива и променливите на масива са вече известни, могат да се използват литерали на масива.
какво е потребителско име
// Деклариране на литерал на масив
int[] arr = нов int[]{ 12345678910 };
- Дължината на този масив определя дължината на създадения масив.
- Няма нужда да пишете новата част int[] в най-новите версии на Java.
3. Промяна на елемент от масив
За да промените елемент, присвоете нова стойност на определен индекс. Индексът започва с 0 и завършва на (общ размер на масива) -1.
// Промяна на първия елемент на 90
arr[0] = 90;
4. Дължина на масива
Можем да получим дължината на масив, като използваме свойството length:
// Получаване на дължината на масива
int n = arr.length;
5. Достъп и актуализиране на всички елементи на масива
- Всички елементи на масива могат да бъдат достъпни с помощта на Java for Loop.
- Всеки елемент в масива е достъпен чрез неговия индекс.
Достъп и актуализиране на всички елементи на масиваJava програма, за да илюстрира създаването на масив от цели числа, поставя някои стойности в масива и отпечатва всяка стойност в стандартен изход
Javaclass 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, за да покаже, че масивът е бил достъпен с незаконен индекс. Индексът е или отрицателен, или по-голям или равен на размера на масива.
Кодът по-долу показва какво се случва, ако се опитаме да получим достъп до елементи извън размера на масива:
Javapublic 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 демонстрира как да прехвърлите масив към метод.
- В основния метод се декларира и инициализира масив от цели числа.
- Методът sum() се извиква с arr като аргумент.
- Вътре в метода sum() всички елементи на масива се добавят с помощта на for цикъл.
- След това крайната сума се отпечатва на конзолата.
Връщане на масиви от методи
Както обикновено методът може да върне и масив. Например програмата по-долу връща масив от метод m1.
Пример:
Javaclass 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
- Фиксиран размер: След като масивът бъде създаден, неговият размер не може да бъде променен, което може да доведе до загуба на памет, ако размерът е надценен, или недостатъчно място за съхранение, ако е подценен.
- Типова хомогенност: Масивите могат да съхраняват само елементи от един и същи тип данни, което може да изисква допълнителна обработка за смесени типове данни.
- Вмъкване и изтриване: Вмъкването или изтриването на елементи, особено в средата на масив, може да бъде скъпо, тъй като може да изисква преместване на елементи.
Свързани публикации
- Назъбен масив в Java
- Цикъл за всеки в Java
- Клас масиви в Java