logo

Arrays i Java

I Java er en matrise en viktig lineær datastruktur som lar oss lagre flere verdier av samme type.

  • Arrays i Java er objekter som alle andre objekter i Java-arrays implisitt arver fra klassen java.lang.Object. Dette lar deg påkalle metoder definert i Object (som toString() equals() og hashCode()).
  • Matriser har en innebygd lengdeegenskap som gir antall elementer i matrisen
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] + ' ');  } } 

Produksjon
40 55 63 17 22 

Nøkkelfunksjoner i Arrays

  • Lagre primitiver og objekter: Java-arrayer kan inneholde både primitive typer (som int char boolean etc.) og objekter (som String Integer etc.)
  • Kontinuerlig minnetildeling Når vi bruker matriser av primitive typer, lagres elementene på sammenhengende steder. For ikke-primitive typer lagres referanser til elementer på sammenhengende steder.
  • Nullbasert indeksering: Det første elementet i matrisen er på indeks 0.
  • Fast lengde: Etter å ha opprettet en matrise er størrelsen fast; vi kan ikke endre det.
primitive_array_' title=Primitiv Array-representasjon i Java update-array-element' loading='lazy' title=Ikke-primitiv Array-representasjon i Java

Grunnleggende operasjon på arrays i Java

1. Erklære en matrise

Den generelle formen for array-deklarasjon er 

// Metode 1:
int arr[];



// Metode 2:
int[] arr;

Elementtypen bestemmer datatypen for hvert element som består av matrisen. Som en rekke heltall kan vi også lage en rekke andre primitive datatyper som char float double etc. eller brukerdefinerte datatyper (objekter av en klasse).

syreegenskaper database

Note: Det er bare hvordan vi kan lage en matrisevariabel ingen faktisk matrise eksisterer. Den forteller bare kompilatoren at denne variabelen (int Array) vil inneholde en matrise av heltallstypen.

2. Initialisering av en Array i Java

Når en matrise erklæres, opprettes bare en referanse til en matrise. Vi bruker ny for å tildele en matrise med gitt størrelse.

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

  • Array-deklarasjon er generelt statisk, men hvis størrelsen ikke er definert, er matrisen dynamisk størrelse.
  • Minne for arrays er alltid dynamisk allokert (på heap-segment) i Java. Dette er forskjellig fra C/C++ hvor minne enten kan være statisk allokert eller dynamisk allokert.
  • Elementene i matrisen tildelt av new vil automatisk initialiseres til null (for numeriske typer), false (for boolesk) eller null (for referansetyper).

Array Literal i Java

kvartal i virksomhet

I en situasjon hvor størrelsen på matrisen og variablene til matrisen allerede er kjente matriseliteraler kan brukes. 

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

  • Lengden på denne matrisen bestemmer lengden på den opprettede matrisen.
  • Det er ikke nødvendig å skrive den nye int[]-delen i de nyeste versjonene av Java.

3. Endre et matriseelement

For å endre et element, tilordne en ny verdi til en bestemt indeks. Indeksen begynner med 0 og slutter på (total matrisestørrelse) -1.

travers-array' loading='lazy' title=

// Endre det første elementet til 90
arr[0] = 90;

123 film

4. Matriselengde

Vi kan få lengden på en matrise ved å bruke lengdeegenskapen:

// Henter lengden på matrisen
int n = arr.lengde;

5. Tilgang og oppdatering av alle matriseelementer

  • Alle elementene i array kan nås ved å bruke Java for Loop.
  • Hvert element i matrisen er tilgjengelig via sin indeks.
Produksjon' loading='lazy' title=Tilgang til og oppdatering av alle matriseelementer

Java-program for å illustrere å lage en matrise med heltall setter noen verdier i matrisen og skriver ut hver verdi til standardutdata

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

Produksjon
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 av objekter i Java

En rekke objekter opprettes som en rekke dataelementer av primitiv type

Eksempel : Her tar vi en elevklasse og lager en array av Student med fem Student-objekter lagret i arrayet. Student-objektene må instansieres ved å bruke konstruktøren til Student-klassen, og referansene deres skal tilordnes array-elementene.

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

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

Hva skjer hvis vi prøver å få tilgang til elementer utenfor matrisestørrelsen?

JVM kaster ArrayIndexOutOfBoundsException for å indikere at arrayen har blitt åpnet med en ulovlig indeks. Indeksen er enten negativ eller større enn eller lik størrelsen på en matrise.

hva er dvalemodus

Koden nedenfor viser hva som skjer hvis vi prøver å få tilgang til elementer utenfor matrisestø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]);  } } 

Produksjon:

konverter streng til int i java
' loading='lazy' title=Utdata av elementer utenfor matrisestørrelsen

Overføring av matriser til metoder

I likhet med variabler kan vi også overføre matriser til metoder. For eksempel overfører programmet nedenfor matrisen til metodesum for å beregne summen av matrisens verdier.

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

Produksjon
sum of array values : 15 

Forklaring

  • Dette Java-programmet viser hvordan du overfører en matrise til en metode.
  • En heltallsmatrise arr er deklarert og initialisert i hovedmetoden.
  • Sum()-metoden kalles med arr som argument.
  • Inne i sum()-metoden legges alle array-elementer til ved å bruke en for-løkke.
  • Den endelige summen skrives deretter ut til konsollen.

Returner matriser fra metoder

Som vanlig kan en metode også returnere en matrise. For eksempel returnerer programmet nedenfor en matrise 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 };  } } 

Produksjon
1 2 3 

Fordeler med Java Arrays

  • Effektiv tilgang: Å få tilgang til et element ved dets indeks er raskt og har konstant tidskompleksitet O(1).
  • Minnehåndtering: Arrays har fast størrelse som gjør minneadministrasjon enkel og forutsigbar.
  • Dataorganisasjon: Matriser hjelper til med å organisere data på en strukturert måte som gjør det enklere å administrere relaterte elementer.

Ulemper med Java Arrays

  • Fast størrelse: Når en matrise er opprettet, kan ikke størrelsen endres, noe som kan føre til minnesløsing hvis størrelsen er overvurdert eller utilstrekkelig lagring hvis den undervurderes.
  • Type Homogenitet: Matriser kan bare lagre elementer av samme datatype som kan kreve ytterligere håndtering for blandede typer data.
  • Innsetting og sletting: Å sette inn eller slette elementer, spesielt midt i en matrise, kan være kostbart da det kan kreve skiftende elementer.

Relaterte innlegg

  • Jagged Array i Java
  • For hver sløyfe i Java
  • Arrays-klassen i Java