V Javi je polje pomembna linearna podatkovna struktura, ki nam omogoča shranjevanje več vrednosti iste vrste.
- Nizi v Javi so predmeti, tako kot vsi drugi objekti v nizih Jave implicitno podedujejo razred java.lang.Object. To vam omogoča, da prikličete metode, definirane v Object (kot sta toString() equals() in hashCode()).
- Matrike imajo vgrajeno lastnost dolžine, ki podaja število elementov v matriki
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] + ' '); } }
Izhod
40 55 63 17 22
Ključne značilnosti Arrays
- Shranjujte primitive in predmete: Matrike Java lahko vsebujejo primitivne tipe (kot je int char boolean itd.) in objekte (kot je String Integer itd.)
- Neprekinjeno dodeljevanje pomnilnika Ko uporabljamo nize primitivnih tipov, so elementi shranjeni na sosednjih lokacijah. Za neprimitivne tipe so reference elementov shranjene na sosednjih lokacijah.
- Indeksiranje na podlagi nič: Prvi element matrike je pri indeksu 0.
- Fiksna dolžina: Po ustvarjanju matrike je njena velikost fiksna; ne moremo ga spremeniti.
Predstavitev primitivnega polja v Javi
Non-Primitive Array predstavitev v JaviOsnove delovanja na nizih v Javi
1. Deklaracija matrike
Splošna oblika deklaracije matrike je
// Metoda 1:
int arr [];pretvori niz v int java// Metoda 2:
int[] arr;
Tip elementa določa podatkovni tip vsakega elementa, ki sestavlja matriko. Tako kot matriko celih števil lahko ustvarimo tudi matriko drugih primitivnih tipov podatkov, kot je char float double itd., ali uporabniško definiranih tipov podatkov (objekti razreda).
Opomba: Tako lahko ustvarimo matrično spremenljivko, dejanska matrika pa ne obstaja. Prevajalniku samo pove, da bo ta spremenljivka (int Array) vsebovala matriko celoštevilskega tipa.
2. Inicializacija polja v Javi
Ko je matrika deklarirana, se ustvari samo referenca matrike. New uporabljamo za dodelitev matrike dane velikosti.
int arr[] = novo int[velikost];
- Deklaracija matrike je na splošno statična, če pa velikost ni definirana, je matrika dinamične velikosti.
- Pomnilnik za polja je v Javi vedno dinamično dodeljen (na segmentu kopice). To se razlikuje od C/C++, kjer se lahko pomnilnik dodeli statično ali dinamično.
- Elementi v matriki, ki jih dodeli new, bodo samodejno inicializirani na nič (za številske tipe), napačno (za logične) ali nič (za referenčne tipe).
Array Literal v Javi
V primeru, da so velikost matrike in spremenljivke matrike že znane, je mogoče uporabiti literale matrike.
// Deklaracija matričnega literala
int[] arr = novo int[]{ 12345678910 };
- Dolžina te matrike določa dolžino ustvarjene matrike.
- V najnovejših različicah Jave ni treba pisati novega dela int[].
3. Spremenite element polja
Če želite spremeniti element, dodelite novo vrednost določenemu indeksu. Indeks se začne z 0 in konča pri (skupna velikost polja) -1.
// Spreminjanje prvega elementa v 90
arr[0] = 90;
4. Dolžina niza
Dolžino matrike lahko dobimo z uporabo lastnosti length:
// Pridobivanje dolžine niza
int n = arr.length;
5. Dostopanje in posodabljanje vseh elementov polja
- Do vseh elementov matrike je mogoče dostopati z uporabo Java for Loop.
- Do vsakega elementa v matriki se dostopa prek njegovega indeksa.
Dostopanje in posodabljanje vseh elementov poljaProgram Java za ponazoritev ustvarjanja matrike celih števil postavi nekaj vrednosti v matriko in vsako vrednost natisne v standardni izhod
lebdeči cssJava
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]); } }
Izhod
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
Nizi predmetov v Javi
Niz objektov je ustvarjen kot niz elementov podatkov primitivnega tipa
Primer : Tukaj vzamemo tečaj študenta in ustvarimo matriko Student s petimi predmeti Student, shranjenimi v matriki. Objekte Student je treba instancirati z uporabo konstruktorja razreda Student, njihove reference pa dodeliti elementom matrike.
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+' }'); } }
Izhod
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 } Kaj se zgodi, če poskušamo dostopati do elementov zunaj velikosti polja?
JVM vrže ArrayIndexOutOfBoundsException, ki nakazuje, da je bil do matrike dostopan z nedovoljenim indeksom. Indeks je negativen ali večji ali enak velikosti matrike.
Spodnja koda prikazuje, kaj se zgodi, če poskušamo dostopati do elementov zunaj velikosti polja:
Javapublic 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]); } }
Izhod:
Izpis elementov zunaj velikosti matrikePosredovanje nizov metodam
Tako kot spremenljivke lahko tudi posredujemo nize metodam. Spodnji program na primer posreduje matriko metodi sum za izračun vsote vrednosti matrike.
primer:
Javapublic 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); } }
Izhod
sum of array values : 15
Razlaga
- Ta program Java prikazuje, kako posredovati matriko metodi.
- Celoštevilska matrika arr je deklarirana in inicializirana v glavni metodi.
- Metoda sum() se kliče z arr kot argumentom.
- Znotraj metode sum() se vsi elementi polja dodajo z uporabo zanke for.
- Končna vsota se nato natisne na konzolo.
Vračanje nizov iz metod
Kot običajno lahko metoda vrne tudi matriko. Na primer, spodnji program vrne matriko iz metode m1.
primer:
Javaclass 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 }; } }
Izhod
1 2 3
Prednosti Java Arrays
- Učinkovit dostop: Dostop do elementa z njegovim indeksom je hiter in ima konstantno časovno kompleksnost O(1).
- Upravljanje pomnilnika: Nizi imajo fiksno velikost, zaradi česar je upravljanje pomnilnika preprosto in predvidljivo.
- Organizacija podatkov: Nizi pomagajo organizirati podatke na strukturiran način, kar olajša upravljanje povezanih elementov.
Slabosti Java Arrays
- Fiksna velikost: Ko je matrika ustvarjena, njene velikosti ni mogoče spremeniti, kar lahko privede do izgube pomnilnika, če je velikost precenjena, ali nezadostnega prostora za shranjevanje, če je podcenjena.
- Homogenost tipa: Matrike lahko shranjujejo le elemente iste podatkovne vrste, kar lahko zahteva dodatno obravnavo za mešane vrste podatkov.
- Vstavljanje in brisanje: Vstavljanje ali brisanje elementov, zlasti na sredini matrike, je lahko drago, saj lahko zahteva premikanje elementov.
Sorodne objave
- Jagged Array v Javi
- Zanka za vsako v Javi
- Razred nizov v Javi