logo

Matrice în Java

Î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
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] + ' ');  } } 

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.
matrice_primitiva_' title=Reprezentare matrice primitivă în Java element-actualizare-matrice' loading='lazy' title=Reprezentare non-primitive Array în Java

Operaț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.

traversă-matrice' loading='lazy' title=

// 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.
Ieșire' loading='lazy' title=Accesarea și actualizarea tuturor elementelor matricei

Programul Java pentru a ilustra crearea unei matrice de numere întregi pune unele valori în matrice și imprimă fiecare valoare la ieșirea standard

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]);  } } 

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.

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+' }');  } } 

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:

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]);  } } 

Ieșire:

' loading='lazy' title=Ieșirea elementelor din afara dimensiunii matricei

Transmiterea 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:

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);  } } 

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:

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 };  } } 

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