logo

Nizi v Javi

V Javi je polje pomembna linearna podatkovna struktura, ki nam omogoča shranjevanje več vrednosti iste vrste.

  • Nizi v Javi so predmeti, tako kot vsi drugi objekti v nizih Jave implicitno podedujejo razred java.lang.Object. To vam omogoča, da prikličete metode, definirane v Object (kot sta toString() equals() in hashCode()).
  • Matrike imajo vgrajeno lastnost dolžine, ki podaja število elementov v matriki
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] + ' ');  } } 

Izhod
40 55 63 17 22 

Ključne značilnosti Arrays

  • Shranjujte primitive in predmete: Matrike Java lahko vsebujejo primitivne tipe (kot je int char boolean itd.) in objekte (kot je String Integer itd.)
  • Neprekinjeno dodeljevanje pomnilnika Ko uporabljamo nize primitivnih tipov, so elementi shranjeni na sosednjih lokacijah. Za neprimitivne tipe so reference elementov shranjene na sosednjih lokacijah.
  • Indeksiranje na podlagi nič: Prvi element matrike je pri indeksu 0.
  • Fiksna dolžina: Po ustvarjanju matrike je njena velikost fiksna; ne moremo ga spremeniti.
primitivna_matrika_' title=Predstavitev primitivnega polja v Javi element-matrike posodobitev' loading='lazy' title=Non-Primitive Array predstavitev v Javi

Osnove delovanja na nizih v Javi

1. Deklaracija matrike

Splošna oblika deklaracije matrike je 

// Metoda 1:
int arr [];



pretvori niz v int java

// Metoda 2:
int[] arr;

Tip elementa določa podatkovni tip vsakega elementa, ki sestavlja matriko. Tako kot matriko celih števil lahko ustvarimo tudi matriko drugih primitivnih tipov podatkov, kot je char float double itd., ali uporabniško definiranih tipov podatkov (objekti razreda).

Opomba: Tako lahko ustvarimo matrično spremenljivko, dejanska matrika pa ne obstaja. Prevajalniku samo pove, da bo ta spremenljivka (int Array) vsebovala matriko celoštevilskega tipa.

2. Inicializacija polja v Javi

Ko je matrika deklarirana, se ustvari samo referenca matrike. New uporabljamo za dodelitev matrike dane velikosti.

int arr[] = novo int[velikost];

  • Deklaracija matrike je na splošno statična, če pa velikost ni definirana, je matrika dinamične velikosti.
  • Pomnilnik za polja je v Javi vedno dinamično dodeljen (na segmentu kopice). To se razlikuje od C/C++, kjer se lahko pomnilnik dodeli statično ali dinamično.
  • Elementi v matriki, ki jih dodeli new, bodo samodejno inicializirani na nič (za številske tipe), napačno (za logične) ali nič (za referenčne tipe).

Array Literal v Javi

V primeru, da so velikost matrike in spremenljivke matrike že znane, je mogoče uporabiti literale matrike. 

// Deklaracija matričnega literala
int[] arr = novo int[]{ 12345678910 };

  • Dolžina te matrike določa dolžino ustvarjene matrike.
  • V najnovejših različicah Jave ni treba pisati novega dela int[].

3. Spremenite element polja

Če želite spremeniti element, dodelite novo vrednost določenemu indeksu. Indeks se začne z 0 in konča pri (skupna velikost polja) -1.

traverse-array' loading='lazy' title=

// Spreminjanje prvega elementa v 90
arr[0] = 90;

4. Dolžina niza

Dolžino matrike lahko dobimo z uporabo lastnosti length:

// Pridobivanje dolžine niza
int n = arr.length;

5. Dostopanje in posodabljanje vseh elementov polja

  • Do vseh elementov matrike je mogoče dostopati z uporabo Java for Loop.
  • Do vsakega elementa v matriki se dostopa prek njegovega indeksa.
Izhod' loading='lazy' title=Dostopanje in posodabljanje vseh elementov polja

Program Java za ponazoritev ustvarjanja matrike celih števil postavi nekaj vrednosti v matriko in vsako vrednost natisne v standardni izhod

lebdeči css
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]);  } } 

Izhod
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 

Nizi predmetov v Javi

Niz objektov je ustvarjen kot niz elementov podatkov primitivnega tipa

Primer : Tukaj vzamemo tečaj študenta in ustvarimo matriko Student s petimi predmeti Student, shranjenimi v matriki. Objekte Student je treba instancirati z uporabo konstruktorja razreda Student, njihove reference pa dodeliti elementom matrike.

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

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

Kaj se zgodi, če poskušamo dostopati do elementov zunaj velikosti polja?

JVM vrže ArrayIndexOutOfBoundsException, ki nakazuje, da je bil do matrike dostopan z nedovoljenim indeksom. Indeks je negativen ali večji ali enak velikosti matrike.

Spodnja koda prikazuje, kaj se zgodi, če poskušamo dostopati do elementov zunaj velikosti polja:

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

Izhod:

' loading='lazy' title=Izpis elementov zunaj velikosti matrike

Posredovanje nizov metodam

Tako kot spremenljivke lahko tudi posredujemo nize metodam. Spodnji program na primer posreduje matriko metodi sum za izračun vsote vrednosti matrike.

primer:

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

Izhod
sum of array values : 15 

Razlaga

  • Ta program Java prikazuje, kako posredovati matriko metodi.
  • Celoštevilska matrika arr je deklarirana in inicializirana v glavni metodi.
  • Metoda sum() se kliče z arr kot argumentom.
  • Znotraj metode sum() se vsi elementi polja dodajo z uporabo zanke for.
  • Končna vsota se nato natisne na konzolo.

Vračanje nizov iz metod

Kot običajno lahko metoda vrne tudi matriko. Na primer, spodnji program vrne matriko iz metode m1. 

primer:

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

Izhod
1 2 3 

Prednosti Java Arrays

  • Učinkovit dostop: Dostop do elementa z njegovim indeksom je hiter in ima konstantno časovno kompleksnost O(1).
  • Upravljanje pomnilnika: Nizi imajo fiksno velikost, zaradi česar je upravljanje pomnilnika preprosto in predvidljivo.
  • Organizacija podatkov: Nizi pomagajo organizirati podatke na strukturiran način, kar olajša upravljanje povezanih elementov.

Slabosti Java Arrays

  • Fiksna velikost: Ko je matrika ustvarjena, njene velikosti ni mogoče spremeniti, kar lahko privede do izgube pomnilnika, če je velikost precenjena, ali nezadostnega prostora za shranjevanje, če je podcenjena.
  • Homogenost tipa: Matrike lahko shranjujejo le elemente iste podatkovne vrste, kar lahko zahteva dodatno obravnavo za mešane vrste podatkov.
  • Vstavljanje in brisanje: Vstavljanje ali brisanje elementov, zlasti na sredini matrike, je lahko drago, saj lahko zahteva premikanje elementov.

Sorodne objave

  • Jagged Array v Javi
  • Zanka za vsako v Javi
  • Razred nizov v Javi