În Java, o matrice este o structură de date liniară importantă care ne permite să stocăm mai multe valori de același tip.
- Matricele din Java sunt obiecte ca toate celelalte obiecte din matricele Java moștenite implicit din clasa java.lang.Object. Acest lucru vă permite să invocați metode definite în Object (cum ar fi toString() equals() și hashCode()).
- Matricele au o proprietate de lungime încorporată care furnizează numărul de elemente din matrice
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] + ' '); } }
Ieșire
40 55 63 17 22
Caracteristicile cheie ale Arrays
- Stocați primitive și obiecte: Matricele Java pot conține atât tipuri primitive (cum ar fi int char boolean etc.) cât și obiecte (cum ar fi String Integer etc.)
- Alocarea de memorie contiguă Când folosim matrice de tipuri primitive, elementele sunt stocate în locații învecinate. Pentru tipurile non-primitive, referințele articolelor sunt stocate în locații învecinate.
- Indexare bazată pe zero: Primul element al tabloului este la indicele 0.
- Lungime fixă: După crearea unei matrice, dimensiunea acesteia este fixă; nu o putem schimba.
Reprezentare matrice primitivă în Java
Reprezentare non-primitive Array în JavaOperațiuni de bază pe matrice în Java
1. Declararea unui Array
Forma generală a declarației de matrice este
// Metoda 1:
int arr[];// Metoda 2:
int[] arr;
Tipul elementului determină tipul de date al fiecărui element care cuprinde matricea. La fel ca o matrice de numere întregi, putem crea și o matrice de alte tipuri de date primitive, cum ar fi char float double etc. sau tipuri de date definite de utilizator (obiecte ale unei clase).
Nota: Este doar modul în care putem crea o variabilă matrice, care nu există o matrice reală. Îi spune doar compilatorului că această variabilă (int Array) va deține o matrice de tip întreg.
2. Inițializarea unui Array în Java
Când o matrice este declarată, este creată doar o referință a unei matrice. Folosim new pentru a aloca o matrice de dimensiune dată.
int arr[] = nou int[dimensiune];
convertiți șirul în int
- Declarația de matrice este în general statică, dar dacă dimensiunea nu este definită, matricea este dimensionată dinamic.
- Memoria pentru matrice este întotdeauna alocată dinamic (pe segmentul heap) în Java. Acest lucru este diferit de C/C++ unde memoria poate fi fie alocată static, fie alocată dinamic.
- Elementele din tabloul alocate de new vor fi inițializate automat la zero (pentru tipurile numerice) false (pentru boolean) sau null (pentru tipurile de referință).
Array Literal în Java
Într-o situație în care dimensiunea matricei și variabilele matricei sunt deja cunoscute, se pot folosi literali matrice.
// Declararea matricei literale
int[] arr = new int[]{ 12345678910 };
- Lungimea acestei matrice determină lungimea matricei create.
- Nu este nevoie să scrieți noua parte int[] în cele mai recente versiuni de Java.
3. Schimbați un element de matrice
Pentru a modifica un element, atribuiți o nouă valoare unui anumit index. Indicele începe cu 0 și se termină la (dimensiunea totală a matricei) -1.
// Schimbarea primului element la 90
arr[0] = 90;atoi c
4. Lungimea matricei
Putem obține lungimea unui tablou folosind proprietatea length:
// Obține lungimea matricei
int n = lungimea arr.;
5. Accesarea și actualizarea tuturor elementelor matricei
- Toate elementele matricei pot fi accesate folosind Java for Loop.
- Fiecare element din matrice este accesat prin indexul său.
Accesarea și actualizarea tuturor elementelor matriceiProgramul Java pentru a ilustra crearea unei matrice de numere întregi pune unele valori în matrice și imprimă fiecare valoare la ieșirea standard
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]); } }
Ieșire
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
Matrice de obiecte în Java
O matrice de obiecte este creată ca o matrice de elemente de date de tip primitiv
Exemplu : Aici luăm o clasă student și creăm o matrice de Student cu cinci obiecte Student stocate în matrice. Obiectele Student trebuie instanțiate folosind constructorul clasei Student și referințele lor ar trebui să fie atribuite elementelor matricei.
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+' }'); } }
Ieșire
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 } Ce se întâmplă dacă încercăm să accesăm elemente din afara dimensiunii matricei?
JVM lansează ArrayIndexOutOfBoundsException pentru a indica faptul că matricea a fost accesată cu un index ilegal. Indicele este fie negativ, fie mai mare sau egal cu dimensiunea unui tablou.
Codul de mai jos arată ce se întâmplă dacă încercăm să accesăm elemente din afara dimensiunii matricei:
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]); } }
Ieșire:
Ieșirea elementelor din afara dimensiunii matriceiTransmiterea de tablouri la metode
La fel ca variabilele, putem de asemenea să transmitem matrice metodelor. De exemplu, programul de mai jos trece matricea la metoda sum pentru a calcula suma valorilor matricei.
sortare rapida
Exemplu:
Javapublic 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); } }
Ieșire
sum of array values : 15
Explicaţie
- Acest program Java demonstrează cum se transmite o matrice unei metode.
- O matrice de numere întregi arr este declarată și inițializată în metoda principală.
- Metoda sum() este apelată cu arr ca argument.
- În cadrul metodei sum() toate elementele matricei sunt adăugate folosind o buclă for.
- Suma finală este apoi tipărită pe consolă.
Returing Arrays de la Methods
Ca de obicei, o metodă poate returna și o matrice. De exemplu, programul de mai jos returnează un tablou din metoda m1.
Exemplu:
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 }; } }
Ieșire
1 2 3
Avantajele matricelor Java
- Acces eficient: Accesarea unui element prin indicele său este rapidă și are o complexitate constantă în timp O(1).
- Managementul memoriei: Matricele au dimensiuni fixe, ceea ce face gestionarea memoriei simplă și previzibilă.
- Organizarea datelor: Matricele ajută la organizarea datelor într-o manieră structurată, facilitând gestionarea elementelor conexe.
Dezavantajele matricelor Java
- Dimensiune fixă: Odată ce o matrice este creată, dimensiunea acesteia nu poate fi modificată, ceea ce poate duce la pierderi de memorie dacă dimensiunea este supraestimată sau la stocare insuficientă dacă este subestimată.
- Omogenitate tip: Matricele pot stoca doar elemente de același tip de date care pot necesita o manipulare suplimentară pentru tipuri mixte de date.
- Inserare și ștergere: Inserarea sau ștergerea elementelor, în special în mijlocul unei matrice, poate fi costisitoare, deoarece poate necesita elemente de deplasare.
Postări înrudite
- Jagged Array în Java
- Pentru fiecare buclă în Java
- Clasa Arrays în Java