logo

Nizovi u Javi

U Javi polje je važna linearna podatkovna struktura koja nam omogućuje pohranu višestrukih vrijednosti iste vrste.

  • Nizovi u Javi su objekti kao i svi drugi objekti u Javi nizovi implicitno nasljeđuju od klase java.lang.Object. To vam omogućuje da pozovete metode definirane u Object (kao što su toString() equals() i hashCode()).
  • Nizovi imaju ugrađeno svojstvo duljine koje daje broj elemenata u nizu
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] + ' ');  } } 

Izlaz
40 55 63 17 22 

Ključne značajke polja

  • Pohranjivanje primitiva i objekata: Java nizovi mogu sadržavati i primitivne tipove (kao što je int char boolean itd.) i objekte (kao što je String Integer itd.)
  • Kontinuirana dodjela memorije Kada koristimo nizove primitivnih tipova, elementi se pohranjuju na susjednim lokacijama. Za neprimitivne tipove reference stavki pohranjuju se na susjednim lokacijama.
  • Indeksiranje temeljeno na nuli: Prvi element niza je na indeksu 0.
  • Fiksna duljina: Nakon stvaranja niza njegova veličina je fiksna; ne možemo to promijeniti.
primitivni_niz_' title=Primitivni prikaz polja u Javi element-niza ažuriranja' loading='lazy' title=Reprezentacija neprimitivnog niza u Javi

Osnove operacija nad nizovima u Javi

1. Deklariranje niza

Opći oblik deklaracije niza je 

ffilmovi

// Metoda 1:
int arr[];



// Metoda 2:
int[] arr;

Tip elementa određuje tip podataka svakog elementa koji čini niz. Poput niza cijelih brojeva također možemo stvoriti niz drugih primitivnih tipova podataka kao što je char float double itd. ili korisnički definiranih tipova podataka (objekti klase).

Bilješka: To je način na koji možemo stvoriti varijablu niza, a stvarni niz ne postoji. On samo govori kompajleru da će ova varijabla (int Array) sadržavati niz integer tipa.

2. Inicijalizacija polja u Javi

Kada je niz deklariran, kreira se samo referenca niza. Koristimo new za dodjelu niza zadane veličine.

int arr[] = novi int[veličina];

  • Deklaracija niza općenito je statična, ali ako veličina nije definirana, niz ima dinamičku veličinu.
  • Memorija za nizove uvijek se dinamički dodjeljuje (na segmentu gomile) u Javi. Ovo se razlikuje od C/C++ gdje se memorija može dodijeliti statički ili dinamički.
  • Elementi u nizu koje dodjeljuje new automatski će se inicijalizirati na nulu (za numeričke tipove) false (za booleove) ili null (za referentne tipove).

Array Literal u Javi

U situaciji kada su veličina polja i varijable polja već poznati, mogu se koristiti literali polja. 

// Deklaracija literala niza
int[] arr = novi int[]{ 12345678910 };

  • Duljina ovog niza određuje duljinu kreiranog niza.
  • Nema potrebe pisati novi int[] dio u najnovijim verzijama Jave.

3. Promijenite element polja

Za promjenu elementa dodijelite novu vrijednost određenom indeksu. Indeks počinje s 0 i završava na (ukupna veličina niza) -1.

traverse-array' loading='lazy' title=

// Mijenjanje prvog elementa u 90
arr[0] = 90;

4. Duljina niza

Duljinu niza možemo dobiti korištenjem svojstva length:

// Dobivanje duljine niza
int n = arr.length;

niz u c++

5. Pristup i ažuriranje svih elemenata niza

  • Svim elementima niza može se pristupiti pomoću Java for Loop.
  • Svakom elementu u nizu pristupa se preko njegovog indeksa.
Izlaz' loading='lazy' title=Pristup i ažuriranje svih elemenata niza

Java program za ilustraciju stvaranja niza cijelih brojeva stavlja neke vrijednosti u niz i ispisuje svaku vrijednost na standardni izlaz

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

Izlaz
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 

Nizovi objekata u Javi

Niz objekata kreiran je kao niz podatkovnih stavki primitivnog tipa

Primjer : Ovdje uzimamo studentsku klasu i stvaramo polje Student s pet objekata Student pohranjenih u nizu. Objekti Student moraju se instancirati pomoću konstruktora klase Student, a njihove reference trebaju se dodijeliti elementima niza.

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

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

Što se događa ako pokušamo pristupiti elementima izvan veličine polja?

JVM izbacuje ArrayIndexOutOfBoundsException kako bi označio da je nizu pristupljeno s nedopuštenim indeksom. Indeks je ili negativan ili veći ili jednak veličini niza.

Donji kod pokazuje što se događa ako pokušamo pristupiti elementima izvan veličine 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]);  } } 

Izlaz:

' loading='lazy' title=Ispis elemenata izvan veličine polja

Prosljeđivanje nizova metodama

Poput varijabli, možemo također proslijediti nizove metodama. Na primjer, program u nastavku prosljeđuje niz metodi sum za izračunavanje zbroja vrijednosti niza.

Primjer:

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

Izlaz
sum of array values : 15 

Obrazloženje

  • Ovaj Java program pokazuje kako prenijeti polje metodi.
  • Niz cijelih brojeva arr je deklariran i inicijaliziran u glavnoj metodi.
  • Metoda sum() se poziva s arr kao argumentom.
  • Unutar metode sum() svi elementi niza dodaju se pomoću for petlje.
  • Konačni zbroj se zatim ispisuje na konzoli.

Vraćanje nizova iz metoda

Kao i obično, metoda također može vratiti niz. Na primjer, program u nastavku vraća niz iz metode m1. 

Primjer:

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

Izlaz
1 2 3 

Prednosti Java polja

  • Učinkovit pristup: Pristup elementu pomoću njegovog indeksa je brz i ima konstantnu vremensku složenost O(1).
  • Upravljanje memorijom: Nizovi imaju fiksnu veličinu što upravljanje memorijom čini jednostavnim i predvidljivim.
  • Organizacija podataka: Nizovi pomažu organizirati podatke na strukturiran način što olakšava upravljanje povezanim elementima.

Nedostaci Java polja

  • Fiksna veličina: Nakon što se niz stvori, njegova se veličina ne može promijeniti što može dovesti do gubitka memorije ako je veličina precijenjena ili nedovoljne memorije ako je podcijenjena.
  • Homogenost tipa: Nizovi mogu pohranjivati ​​samo elemente iste vrste podataka što može zahtijevati dodatno rukovanje za mješovite vrste podataka.
  • Umetanje i brisanje: Umetanje ili brisanje elemenata, posebno u sredini niza, može biti skupo jer može zahtijevati pomicanje elemenata.

Povezani postovi

  • Jagged Array u Javi
  • Za-svaka petlja u Javi
  • Klasa polja u Javi