logo

Масиви в Java

У Java, Array це група однотипних змінних, на які посилається загальна назва. Масиви в Java працюють інакше, ніж у C/C++. Нижче наведено деякі важливі моменти щодо масивів Java.

Масиви в Java

  • У Java всі масиви розподіляються динамічно. (обговорюється нижче)
  • Масиви можуть зберігатися в безперервній пам’яті [послідовні місця пам’яті].
  • Оскільки в Java масиви є об’єктами, ми можемо знайти їх довжину за допомогою властивості object довжина . Це відрізняється від C/C++, де ми знаходимо довжину за допомогою sizeof.
  • Змінна масиву Java також може бути оголошена як інші змінні з [] після типу даних.
  • Змінні в масиві впорядковані, і кожна має індекс, що починається з 0.
  • Масив Java також можна використовувати як статичне поле, локальну змінну або параметр методу.

Масив може містити примітиви (int, char тощо) і об’єктні (або непримітивні) посилання на клас залежно від визначення масиву. У випадку примітивних типів даних фактичні значення можуть зберігатися в безперервних розташуваннях пам’яті (JVM не гарантує таку поведінку). У випадку об’єктів класу, фактичні об'єкти зберігаються в сегменті купи .



пріоритет оператора java

Масиви Java

Примітка: Це зберігання масивів допомагає нам отримувати довільний доступ до елементів масиву [Підтримка довільного доступу].

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

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

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



-- type var-name[]; -- type[] var-name;>

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

приклад:

// both are valid declarations int intArray[]; int[] intArray; // similar to int we can declare // byte , short, boolean, long, float // double, char // an array of references to objects of // the class MyClass (a class created by user) MyClass myClassArray[]; // array of Object Object[] ao, // array of Collection // of unknown type Collection[] ca;>

Хоча перша декларація встановлює, що int Array є змінною масиву, реального масиву не існує . Він просто повідомляє компілятору, що ця змінна (Int Array) буде містити масив цілочисельного типу. Щоб зв’язати int Array із фактичним фізичним масивом цілих чисел, ви повинні виділити один за допомогою новий і призначте його масиву int.



Створення екземпляра масиву в Java

Коли оголошено масив, створюється лише посилання на масив. Щоб створити або надати пам’ять масиву, ви створюєте такий масив: Загальна форма новий як це стосується одновимірних масивів виглядає наступним чином:

var-name = new type [size];>

тут, типу вказує тип даних, що виділяються, розмір визначає кількість елементів у масиві, і назва змінної це ім'я змінної масиву, яка пов'язана з масивом. Використовувати новий щоб виділити масив, ви повинні вказати тип і кількість елементів для виділення.

приклад:

//declaring array int intArray[]; // allocating memory to array intArray = new int[20]; // combining both statements in one int[] intArray = new int[20];>

Примітка: Елементи в масиві, виділені новий буде автоматично ініціалізовано нуль (для числових типів), помилковий (для логічного значення), або нуль (для довідкових типів). Зверніться до значення масиву за замовчуванням у Java .

Процес отримання масиву складається з двох етапів. По-перше, ви повинні оголосити змінну потрібного типу масиву. По-друге, ви повинні виділити пам'ять для зберігання масиву, використовуючи new, і призначити її змінній масиву. Таким чином, на Java , всі масиви розподіляються динамічно.

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

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

// Declaring array literal int[] intArray = new int[]{ 1,2,3,4,5,6,7,8,9,10 };>
  • Довжина цього масиву визначає довжину створеного масиву.
  • Немає необхідності писати нову частину int[] в останніх версіях Java.

Доступ до елементів масиву Java за допомогою циклу for

Доступ до кожного елемента в масиві здійснюється через його індекс. Індекс починається з 0 і закінчується на (загальний розмір масиву) -1. До всіх елементів масиву можна отримати доступ за допомогою Java for Loop.

 // accessing the elements of the specified array for (int i = 0; i>

Реалізація:

Java
// Java program to illustrate creating an array // of integers, puts some values in the array, // and prints each value to standard output. class GFG { public static void main(String[] args) { // declares an Array of integers. int[] arr; // allocating memory for 5 integers. arr = new int[5]; // initialize the first elements of the array arr[0] = 10; // initialize the second elements of the array arr[1] = 20; // so on... arr[2] = 30; arr[3] = 40; arr[4] = 50; // 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 : 10 Element at index 1 : 20 Element at index 2 : 30 Element at index 3 : 40 Element at index 4 : 50>

Складність вищеописаного способу:

Часова складність: O(n)
Допоміжний простір: O(1)

Ви також можете отримати доступ до масивів Java за допомогою для кожної петлі .

що означає google

Масиви-в-Java

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

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

Student[] arr = new Student[5]; //student is a user-defined class>

Синтаксис:

-- data type[] arrName; -- datatype arrName[]; -- datatype [] arrName;>

Приклад масивів об'єктів

Приклад 1:

Нижче наведено реалізацію вищезгаданої теми:

Java
import java.io.*; class GFG { public static void main (String[] args) { int [] arr=new int [4]; // 4 is the size of arr System.out.println('Array Size:'+arr.length); } }>

Вихід
Array Size:4>

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

приклад 2:

Нижче наведено реалізацію вищезгаданої теми:

Java
// Java program to illustrate creating // an array of objects class Student { public int roll_no; public String name; Student(int roll_no, String name) { this.roll_no = roll_no; this.name = name; } } // Elements of the array are objects of a class Student. public class GFG { public static void main(String[] args) { // declares an Array of Students Student[] arr; // allocating memory for 5 objects of type Student. arr = new Student[5]; // initialize the first elements of the array arr[0] = new Student(1, 'aman'); // initialize the second elements of the array arr[1] = new Student(2, 'vaibhav'); // so on... 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>

Складність вищеописаного способу:

Часова складність: O(n)
Допоміжний простір: O(1)

Приклад 3

Масив об’єктів також створюється так:

Java
// Java program to illustrate creating // an array of objects class Student { public String name; Student(String name) { this.name = name; } @Override public String toString(){ return name; } } // Elements of the array are objects of a class Student. public class GFG { public static void main (String[] args) { // declares an Array and initializing the elements of the array Student[] myStudents = new Student[]{new Student('Dharma'),new Student('sanvi'),new Student('Rupa'),new Student('Ajay')}; // accessing the elements of the specified array for(Student m:myStudents){ System.out.println(m); } } }>

Вихід
Dharma sanvi Rupa Ajay>

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

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

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

Java
// Code for showing error 'ArrayIndexOutOfBoundsException' public class GFG { 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]); } }>

Вихід

Trying to access element outside the size of array Exception in thread 'main' java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 4 at GFG.main(GFG.java:13)>

Приклад (ітерація масиву):

Java
public class GFG { public static void main(String[] args) { int[] arr = new int[2]; arr[0] = 10; arr[1] = 20; for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); } }>

Вихід
10 20>

Складність вищеописаного способу:

Часова складність: O(n), тут n — розмір масиву.
Допоміжний простір: O(1) , оскільки додаткове місце не потрібне.

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

Багатовимірними є масиви масиви масивів з кожним елементом масиву, що містить посилання на інші масиви. Вони також відомі як Зубчасті масиви . Багатовимірний масив створюється додаванням одного набору квадратних дужок ([]) для кожного розміру.

Синтаксис багатовимірного масиву Java

Існує 2 способи оголошення багатовимірних масивів Java, як зазначено нижче:

-- datatype [][] arrayrefvariable; -- datatype arrayrefvariable[][];>

приклад:

Java
// Java Program to demonstrate // Java Multidimensional Array import java.io.*; // Driver class class GFG { public static void main(String[] args) { // Syntax int[][] arr = new int[3][3]; // 3 row and 3 column // Number of Rows System.out.println('Number of Rows:'+ arr.length); // Number of Columns System.out.println('Number of Columns:'+ arr[0].length); } }>

Вихід
Number of Rows:3 Number of Columns:3>


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

ddl проти dml

Оголошення багатовимірного масиву

int[][] intArray = new int[10][20]; //a 2D array or matrix int[][][] intArray = new int[10][20][10]; //a 3D array>

Приклад багатовимірного масиву в Java

Приклад 1:

Нижче наведено реалізацію вищезазначеного методу:

Java
// Java Program to Multidimensional Array // Driver Class public class multiDimensional { // main function public static void main(String args[]) { // declaring and initializing 2D array int arr[][] = { { 2, 7, 9 }, { 3, 6, 1 }, { 7, 4, 2 } }; // printing 2D array for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) System.out.print(arr[i][j] + ' '); System.out.println(); } } }>

Вихід
2 7 9 3 6 1 7 4 2>

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

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

Java
// Java program to demonstrate // passing of array to method public class Test { // 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>

Складність вищеописаного способу:

Часова складність: O(n)
Допоміжний простір: О(1)

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

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

Java
// Java program to demonstrate // return of array from method class Test { // 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>

Складність вищеописаного способу:

Часова складність: O(n)
Допоміжний простір: O(1)

Об’єкти класу для масивів

Кожен масив має пов’язаний об’єкт Class, спільний з усіма іншими масивами з тим же типом компонента.

Java
// Java program to demonstrate // Class Objects for Arrays class Test { public static void main(String args[]) { int intArray[] = new int[3]; byte byteArray[] = new byte[3]; short shortsArray[] = new short[3]; // array of Strings String[] strArray = new String[3]; System.out.println(intArray.getClass()); System.out.println( intArray.getClass().getSuperclass()); System.out.println(byteArray.getClass()); System.out.println(shortsArray.getClass()); System.out.println(strArray.getClass()); } }>

Вихід
class [I class java.lang.Object class [B class [S class [Ljava.lang.String;>

Пояснення вищезазначеного методу:

  1. Рядок [I — це сигнатура типу виконання для масиву об’єктів класу з типом компонента внутр .
  2. Єдиним прямим суперкласом типу масиву є java.lang.Object .
  3. Рядок [B — це сигнатура типу виконання для масиву об’єктів класу з типом компонента байт .
  4. Рядок [S — це сигнатура типу виконання для масиву об’єктів класу з типом компонента короткий .
  5. Рядок [L — це сигнатура типу виконання для масиву об’єктів класу з типом компонента класу. Потім слідує назва класу.

Члени масиву Java

Тепер, як ви знаєте, масиви — це об’єкти класу, а прямий суперклас масивів — це клас Object. Усі члени типу масиву:

  • Загальне кінцеве поле довжина містить кількість компонентів масиву. Довжина може бути додатною або нульовою.
  • Усі члени успадковані від класу Object; єдиний метод Object, який не успадковується, це його клонувати метод.
  • Громадський метод клонувати() перевизначає метод clone у класі Object і видає no перевірені винятки .

Типи масивів і дозволені типи їх елементів

Типи масивівДозволені типи елементів
Масиви примітивних типівБудь-який тип, який може бути неявно підвищений до оголошеного типу.
Масиви типів об’єктівАбо оголошені об’єкти типу, або об’єкти дочірнього класу.
Масиви абстрактних типів класівЙого об’єкти дочірнього класу дозволені.
Масиви типу інтерфейсуДозволяються об’єкти класу його реалізації.

Клонування одновимірного масиву в Java

Коли ви клонуєте одновимірний масив, наприклад Object[], виконується глибока копія з новим масивом, який містить копії елементів вихідного масиву, а не посилання.

рядок списку java

Нижче наведено реалізацію вищезазначеного методу:

Java
// Java program to demonstrate // cloning of one-dimensional arrays class Test { public static void main(String args[]) { int intArray[] = { 1, 2, 3 }; int cloneArray[] = intArray.clone(); // will print false as deep copy is created // for one-dimensional array System.out.println(intArray == cloneArray); for (int i = 0; i < cloneArray.length; i++) { System.out.print(cloneArray[i] + ' '); } } }>

Вихід
false 1 2 3>


Клонування масиву

Клонування багатовимірного масиву в Java

Однак клон багатовимірного масиву (як-от Object[][]) є поверхневою копією, що означає, що він створює лише один новий масив із посиланням на вихідний масив елементів кожного масиву елементів, але підмасиви є спільний доступ.

Java
// Java program to demonstrate // cloning of multi-dimensional arrays class Test { public static void main(String args[]) { int intArray[][] = { { 1, 2, 3 }, { 4, 5 } }; int cloneArray[][] = intArray.clone(); // will print false System.out.println(intArray == cloneArray); // will print true as shallow copy is created // i.e. sub-arrays are shared System.out.println(intArray[0] == cloneArray[0]); System.out.println(intArray[1] == cloneArray[1]); } }>

Вихід
false true true>


Багатовимірний масив-клон

Часті запитання про масиви Java

1. Чи можемо ми вказати розмір масиву як long?

Ні, ми не можемо вказати розмір масиву як long, але ми можемо вказати його як int або short.

2. Який прямий суперклас масиву в Java?

Ан Об'єкт є прямим суперкласом масиву в Java.

3. Які інтерфейси реалізовані за допомогою масивів у Java?

Кожен тип масиву реалізує інтерфейси Cloneable і java.io.Serializable .

4. Чи можемо ми змінити розмір масиву?

Розмір масиву не можна змінити (після ініціалізації). Однак посилання на масив можна зробити таким, щоб вказувати на інший масив.

Статті, пов'язані з темою