Masyvai Java

Masyvai Java

Java masyvas yra svarbi linijinė duomenų struktūra, leidžianti saugoti kelias to paties tipo reikšmes.

  • „Java“ masyvai yra objektai, kaip ir visi kiti „Java“ masyvo objektai, netiesiogiai paveldimi iš java.lang.Object klasės. Tai leidžia iškviesti objekte apibrėžtus metodus (pvz., toString() equals() ir hashCode()).
  • Masyvai turi įmontuotą ilgio savybę, kuri nurodo masyvo elementų skaičių
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  ]     +     ' '  );      }   }   

Išvestis
40 55 63 17 22  

Pagrindinės masyvo savybės

  • Laikykite primityvus ir objektus: „Java“ masyvai gali turėti tiek primityvius tipus (pvz., int char boolean ir kt.), tiek objektus (pvz., String Integer ir kt.)
  • Gretimos atminties paskirstymas Kai naudojame primityvių tipų masyvus, elementai saugomi gretimose vietose. Neprimityviųjų tipų elementų nuorodos saugomos gretimose vietose.
  • Nulinis indeksavimas: Pirmasis masyvo elementas yra indekse 0.
  • Fiksuotas ilgis: Sukūrus masyvą, jo dydis fiksuojamas; mes negalime to pakeisti.
primityvus_masyvas_Primityviojo masyvo vaizdavimas Java atnaujinimo-masyvo-elementasNeprimityviojo masyvo atvaizdavimas Java

„Java“ masyvų veikimo pagrindai

1. Masyvo deklaravimas

Bendroji masyvo deklaracijos forma yra 

// 1 būdas:
int arr[];

// 2 metodas:
int[] arr;

Elemento tipas nustato kiekvieno elemento, kurį sudaro masyvas, duomenų tipą. Kaip ir sveikųjų skaičių masyvas, taip pat galime sukurti kitų primityvių duomenų tipų masyvą, pvz., char float double ir tt arba vartotojo apibrėžtus duomenų tipus (klasės objektus).

Pastaba: Kaip tik galime sukurti masyvo kintamąjį, tikrojo masyvo nėra. Tai tik nurodo kompiliatoriui, kad šis kintamasis (int Array) turės sveikojo skaičiaus masyvą.

2. Masyvo inicijavimas Java

Kai masyvas deklaruojamas, sukuriama tik masyvo nuoroda. Naudojame naują, kad paskirstytume nurodyto dydžio masyvą.

int arr[] = naujas int[dydis];

  • Masyvo deklaracija paprastai yra statinė, bet jei dydis neapibrėžtas, masyvo dydis yra dinamiškas.
  • Masyvų atmintis visada dinamiškai paskirstoma (krūvos segmente) Java. Tai skiriasi nuo C/C++, kur atmintis gali būti paskirstyta statiškai arba dinamiškai.
  • Elementai masyve, priskirti nauju, bus automatiškai inicijuojami į nulį (skaitiniams tipams), false (loginiams) arba nuliniams (nuorodos tipams).

„Array Literal“ Java kalba

Esant situacijai, kai masyvo dydis ir masyvo kintamieji jau žinomi, galima naudoti masyvo literalius. 

// Masyvo paskelbimas pažodžiui
int[] arr = naujas int[]{ 12345678910 };

  • Šio masyvo ilgis lemia sukurto masyvo ilgį.
  • Nereikia rašyti naujos int[] dalies naujausiose Java versijose.

3. Pakeiskite masyvo elementą

Norėdami pakeisti elementą, konkrečiam indeksui priskirkite naują reikšmę. Indeksas prasideda 0 ir baigiasi (bendras masyvo dydis) -1.

traversas-masyvas

// Pirmojo elemento keitimas į 90
arr[0] = 90;

4. Masyvo ilgis

Masyvo ilgį galime gauti naudodami ilgio savybę:

// Masyvo ilgio gavimas
int n = arr.ilgis;

5. Visų masyvo elementų prieiga ir atnaujinimas

  • Visus masyvo elementus galima pasiekti naudojant „Java for Loop“.
  • Kiekvienas masyvo elementas pasiekiamas per jo indeksą.
IšvestisPrieiga prie visų masyvo elementų ir jų atnaujinimas

Java programa, skirta iliustruoti sveikųjų skaičių masyvo kūrimą, į masyvą įdeda tam tikras reikšmes ir kiekvieną reikšmę išspausdina standartinėje išvestyje

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

Išvestis
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  

Objektų masyvai Java

Objektų masyvas sukuriamas kaip primityvaus tipo duomenų elementų masyvas

Pavyzdys : Mes pradedame mokinio klasę ir sukuriame Mokinio masyvą su penkiais masyve saugomais Mokinio objektais. Studentų objektai turi būti pavaizduoti naudojant Studento klasės konstruktorių, o jų nuorodos turi būti priskirtos masyvo elementams.

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

Išvestis
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 }  

Kas atsitiks, jei bandysime pasiekti elementus, kurie nėra masyvo dydžio?

JVM meta ArrayIndexOutOfBoundsException, kad parodytų, kad masyvas buvo pasiektas naudojant neteisėtą indeksą. Indeksas yra neigiamas arba didesnis arba lygus masyvo dydžiui.

Žemiau esantis kodas rodo, kas atsitiks, jei bandysime pasiekti elementus, kurie nėra masyvo dydžio:

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

Išvestis:

Elementų, esančių už masyvo dydžio, išvestis

Masyvų perdavimas metodams

Kaip ir kintamuosius, mes taip pat galime perduoti masyvus metodams. Pavyzdžiui, toliau pateikta programa perduoda masyvą metodo sumai, kad apskaičiuotų masyvo reikšmių sumą.

Pavyzdys:

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

Išvestis
sum of array values : 15  

Paaiškinimas

  • Ši Java programa parodo, kaip perduoti masyvą metodui.
  • Sveikųjų skaičių masyvas arr deklaruojamas ir inicijuojamas pagrindiniu metodu.
  • Sum() metodas iškviečiamas su arr kaip argumentu.
  • Sum() metodo viduje visi masyvo elementai pridedami naudojant for kilpą.
  • Tada galutinė suma atspausdinama į konsolę.

Masyvų grąžinimas iš metodų

Kaip įprasta, metodas taip pat gali grąžinti masyvą. Pavyzdžiui, toliau pateikta programa grąžina masyvą iš metodo m1. 

Pavyzdys:

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

Išvestis
1 2 3  

Java masyvų pranašumai

  • Efektyvi prieiga: Prieiga prie elemento pagal jo indeksą yra greita ir turi pastovų laiko sudėtingumą O(1).
  • Atminties valdymas: Masyvai yra fiksuoto dydžio, todėl atminties valdymas yra paprastas ir nuspėjamas.
  • Duomenų organizavimas: Masyvai padeda sistemingai tvarkyti duomenis, todėl lengviau valdyti susijusius elementus.

Java masyvų trūkumai

  • Fiksuotas dydis: Sukūrus masyvą, jo dydis negali būti pakeistas, o tai gali sukelti atminties švaistymą, jei dydis yra pervertintas, arba nepakanka saugyklos, jei jis neįvertinamas.
  • Tipo homogeniškumas: Masyvai gali saugoti tik to paties tipo duomenų elementus, dėl kurių gali prireikti papildomo tvarkymo mišrių tipų duomenims.
  • Įterpimas ir ištrynimas: Elementų įterpimas arba ištrynimas, ypač masyvo viduryje, gali būti brangus, nes gali prireikti perkelti elementus.

Susiję įrašai

  • Jagged Array Java
  • Kiekvienai „Java“ kilpai
  • Masyvų klasė Java