Arrays i Java

Arrays i Java

I Java er et array en vigtig lineær datastruktur, der giver os mulighed for at gemme flere værdier af samme type.

  • Arrays i Java er objekter, ligesom alle andre objekter i Java-arrays implicit arver fra klassen java.lang.Object. Dette giver dig mulighed for at kalde metoder defineret i Object (såsom toString() equals() og hashCode()).
  • Arrays har en indbygget længdeegenskab, som angiver antallet af elementer i arrayet
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  ]     +     ' '  );      }   }   

Produktion
40 55 63 17 22  

Nøglefunktioner i Arrays

  • Gem primitiver og objekter: Java-arrays kan indeholde både primitive typer (som int char boolean osv.) og objekter (som String Integer osv.)
  • Sammenhængende hukommelsestildeling Når vi bruger arrays af primitive typer, lagres elementerne på sammenhængende steder. For ikke-primitive typer er referencer til elementer gemt på sammenhængende steder.
  • Nulbaseret indeksering: Det første element i arrayet er ved indeks 0.
  • Fast længde: Efter oprettelse af et array er størrelsen fast; vi kan ikke ændre det.
primitivt_array_Primitiv Array-repræsentation i Java update-array-elementIkke-primitiv Array-repræsentation i Java

Grundlæggende betjening på arrays i Java

1. Erklæring af et array

Den generelle form for array-deklaration er 

// Metode 1:
int arr[];

// Metode 2:
int[] arr;

Elementtypen bestemmer datatypen for hvert element, der omfatter arrayet. Ligesom en matrix af heltal kan vi også skabe en matrix af andre primitive datatyper som char float double etc. eller brugerdefinerede datatyper (objekter i en klasse).

Note: Det er bare, hvordan vi kan skabe en array-variabel, der ikke eksisterer et egentligt array. Det fortæller blot compileren, at denne variabel (int Array) vil indeholde et array af heltalstypen.

2. Initialisering af et array i Java

Når et array erklæres, oprettes kun en reference til et array. Vi bruger ny til at tildele et array af en given størrelse.

int arr[] = ny int[størrelse];

  • Array Declaration er generelt statisk, men hvis størrelsen ikke er defineret, er Array'et dynamisk størrelse.
  • Hukommelse til arrays er altid dynamisk allokeret (på heap-segment) i Java. Dette er forskelligt fra C/C++, hvor hukommelse enten kan være statisk allokeret eller dynamisk allokeret.
  • Elementerne i arrayet, der er allokeret af new, vil automatisk blive initialiseret til nul (for numeriske typer), false (for boolean) eller null (for referencetyper).

Array Literal i Java

I en situation, hvor størrelsen af ​​arrayet og variablerne af arrayet allerede er kendte arrayliteraler, kan der anvendes. 

// Erklærer array literal
int[] arr = ny int[]{ 12345678910 };

  • Længden af ​​dette array bestemmer længden af ​​det oprettede array.
  • Der er ingen grund til at skrive den nye int[]-del i de seneste versioner af Java.

3. Skift et array-element

For at ændre et element skal du tildele en ny værdi til et specifikt indeks. Indekset begynder med 0 og slutter ved (samlet matrixstørrelse) -1.

travers-array

// Ændring af det første element til 90
arr[0] = 90;

4. Array længde

Vi kan få længden af ​​et array ved at bruge egenskaben length:

// Hentning af længden af ​​arrayet
int n = arr.længde;

5. Adgang til og opdatering af alle array-elementer

  • Alle elementer i array kan tilgås ved hjælp af Java for Loop.
  • Hvert element i arrayet tilgås via dets indeks.
ProduktionAdgang til og opdatering af alle array-elementer

Java-program til at illustrere oprettelse af et array af heltal sætter nogle værdier i arrayet og udskriver hver værdi til standardoutput

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

Produktion
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  

Arrays af objekter i Java

En matrix af objekter oprettes som en matrix af primitiv type dataelementer

Eksempel : Her tager vi en elevklasse og laver et array af Student med fem Student-objekter gemt i arrayet. Student-objekterne skal instansieres ved hjælp af konstruktøren af ​​Student-klassen, og deres referencer skal tildeles array-elementerne.

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

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

Hvad sker der, hvis vi forsøger at få adgang til elementer uden for matrixstørrelsen?

JVM kaster ArrayIndexOutOfBoundsException for at angive, at arrayet er blevet tilgået med et ulovligt indeks. Indekset er enten negativt eller større end eller lig med størrelsen af ​​et array.

Nedenstående kode viser, hvad der sker, hvis vi forsøger at få adgang til elementer uden for matrixstørrelsen:

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

Produktion:

Output af elementer uden for matrixstørrelsen

Overførsel af arrays til metoder

Ligesom variabler kan vi også overføre arrays til metoder. For eksempel overfører nedenstående program arrayet til metodesum for at beregne summen af ​​arrayets værdier.

Eksempel:

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

Produktion
sum of array values : 15  

Forklaring

  • Dette Java-program demonstrerer, hvordan man sender et array til en metode.
  • En heltalsarray arr erklæres og initialiseres i hovedmetoden.
  • Sum()-metoden kaldes med arr som argument.
  • Inde i sum()-metoden tilføjes alle array-elementer ved hjælp af en for-løkke.
  • Den endelige sum udskrives derefter til konsollen.

Returnering af arrays fra metoder

Som sædvanlig kan en metode også returnere et array. For eksempel returnerer nedenstående program et array fra metode m1. 

Eksempel:

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

Produktion
1 2 3  

Fordele ved Java Arrays

  • Effektiv adgang: Adgang til et element ved dets indeks er hurtigt og har konstant tidskompleksitet O(1).
  • Hukommelseshåndtering: Arrays har fast størrelse, hvilket gør hukommelseshåndtering ligetil og forudsigelig.
  • Dataorganisation: Arrays hjælper med at organisere data på en struktureret måde, hvilket gør det nemmere at administrere relaterede elementer.

Ulemper ved Java Arrays

  • Fast størrelse: Når først et array er oprettet, kan dets størrelse ikke ændres, hvilket kan føre til hukommelsesspild, hvis størrelsen er overvurderet eller utilstrækkelig lagring, hvis den undervurderes.
  • Type Homogenitet: Arrays kan kun gemme elementer af samme datatype, som kan kræve yderligere håndtering for blandede typer data.
  • Indsættelse og sletning: Indsættelse eller sletning af elementer, især i midten af ​​et array, kan være dyrt, da det kan kræve at skifte elementer.

Relaterede indlæg

  • Jagged Array i Java
  • For-hver sløjfe i Java
  • Arrays klasse i Java