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
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.
Primitiv Array-repræsentation i Java
Ikke-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.
// Æ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.
Adgang 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.
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