Java masīvs ir svarīga lineāra datu struktūra, kas ļauj saglabāt vairākas viena veida vērtības.
- Java masīvi ir objekti, tāpat kā visi citi objekti Java masīvos, kas netieši tiek mantoti no klases java.lang.Object. Tas ļauj izsaukt objektā definētās metodes (piemēram, toString() equals() un hashCode()).
- Masīviem ir iebūvēts garuma rekvizīts, kas nodrošina elementu skaitu masīvā
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] + ' '); } }
Izvade
40 55 63 17 22
Arrays galvenās iezīmes
- Uzglabājiet primitīvus un objektus: Java masīvos var būt gan primitīvi tipi (piemēram, int char Būla u.c.), gan objekti (piemēram, String Integer utt.)
- Blakus esošās atmiņas piešķiršana Kad mēs izmantojam primitīvo tipu masīvus, elementi tiek glabāti blakus esošās vietās. Neprimitīvajiem veidiem atsauces uz vienumiem tiek glabātas blakus esošās vietās.
- Nulles indeksēšana: Pirmais masīva elements atrodas indeksā 0.
- Fiksēts garums: Pēc masīva izveidošanas tā lielums ir fiksēts; mēs to nevaram mainīt.
Primitīvā masīva attēlošana Java valodā
Neprimitīvā masīva attēlojums Java valodāPamati Darbības ar masīviem Java
1. Masīva deklarēšana
Masīva deklarācijas vispārējā forma ir
// 1. metode:
int arr[];// 2. metode:
int[] arr;
Elementa veids nosaka katra elementa datu tipu, kas veido masīvu. Tāpat kā veselu skaitļu masīvs, mēs varam izveidot arī citu primitīvu datu tipu masīvu, piemēram, char float double utt. vai lietotāja definētus datu tipus (klases objektus).
Piezīme: Tas ir tikai veids, kā mēs varam izveidot masīva mainīgo, nepastāv reāls masīvs. Tas tikai norāda kompilatoram, ka šim mainīgajam (int Array) būs vesela skaitļa tipa masīvs.
2. Masīva inicializācija Java
Kad tiek deklarēts masīvs, tiek izveidota tikai atsauce uz masīvu. Mēs izmantojam jauno, lai piešķirtu noteikta izmēra masīvu.
int arr[] = jauns int[izmērs];
java vs c++
- Masīva deklarācija parasti ir statiska, bet, ja izmērs nav definēts, masīvs ir dinamiski izmērīts.
- Atmiņa masīviem vienmēr tiek dinamiski piešķirta (uz kaudzes segmentu) Java. Tas atšķiras no C/C++, kur atmiņu var piešķirt statiski vai dinamiski.
- Elementi masīvā, kas piešķirti ar new, tiks automātiski inicializēti uz nulli (skaitliskajiem tipiem), false (būla vērtībām) vai nulles (atsauces tipiem).
Masīvs Literāls Java valodā
Situācijā, kad masīva lielums un masīva mainīgie ir jau zināmi, var izmantot masīva literāļus.
// Masīva literāla deklarēšana
int[] arr = jauns int[]{ 12345678910 };
- Šī masīva garums nosaka izveidotā masīva garumu.
- Jaunākajās Java versijās nav jāraksta jaunā int[] daļa.
3. Mainiet masīva elementu
Lai mainītu elementu, piešķiriet noteiktam indeksam jaunu vērtību. Indekss sākas ar 0 un beidzas ar (kopējais masīva lielums) -1.
// Pirmā elementa maiņa uz 90
arr[0] = 90;
4. Masīva garums
Mēs varam iegūt masīva garumu, izmantojot garuma īpašību:
// Masīva garuma iegūšana
int n = arr.garums;
5. Piekļuve visiem masīva elementiem un to atjaunināšana
- Visiem masīva elementiem var piekļūt, izmantojot Java for Loop.
- Katram masīva elementam var piekļūt, izmantojot tā indeksu.
Piekļuve visiem masīva elementiem un to atjaunināšanaJava programma, lai ilustrētu veselu skaitļu masīva izveidi, ievieto masīvā dažas vērtības un izdrukā katru vērtību standarta izvadē
Javaclass 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]); } }
Izvade
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
Objektu masīvi Java valodā
Objektu masīvs tiek izveidots kā primitīva tipa datu vienumu masīvs
Piemērs : Šeit mēs uzņemam studentu klasi un izveidojam Studentu masīvu ar pieciem studentu objektiem, kas tiek glabāti masīvā. Studentu objekti ir jāizveido, izmantojot Studentu klases konstruktoru, un to atsauces jāpiešķir masīva elementiem.
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+' }'); } }
Izvade
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 notiek, ja mēģinām piekļūt elementiem ārpus masīva lieluma?
JVM izmet ArrayIndexOutOfBoundsException, lai norādītu, ka masīvam ir piekļūts ar nelegālu indeksu. Indekss ir negatīvs vai lielāks vai vienāds ar masīva lielumu.
Zemāk redzamais kods parāda, kas notiek, ja mēģinām piekļūt elementiem ārpus masīva lieluma:
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]); } }
Izvade:
jauna rinda python
Elementu izvade ārpus masīva lielumaMasīvu nodošana metodēm
Tāpat kā mainīgos, mēs varam arī nodot masīvus metodēm. Piemēram, zemāk esošā programma nodod masīvu metodes summai, lai aprēķinātu masīva vērtību summu.
Piemērs:
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); } }
Izvade
sum of array values : 15
Paskaidrojums
- Šī Java programma parāda, kā masīvu nodot metodei.
- Veselo skaitļu masīvs arr tiek deklarēts un inicializēts galvenajā metodē.
- Sum() metode tiek izsaukta ar arr kā argumentu.
- Sum() metodes ietvaros visi masīva elementi tiek pievienoti, izmantojot for cilpu.
- Pēc tam galīgā summa tiek izdrukāta konsolē.
Masīvu atgriešana no metodēm
Kā parasti, metode var arī atgriezt masīvu. Piemēram, zemāk esošā programma atgriež masīvu no metodes m1.
Piemērs:
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 }; } }
Izvade
1 2 3
Java masīvu priekšrocības
- Efektīva piekļuve: Piekļuve elementam pēc tā indeksa ir ātra, un tai ir nemainīga laika sarežģītība O(1).
- Atmiņas pārvaldība: Masīviem ir fiksēts izmērs, kas padara atmiņas pārvaldību vienkāršu un paredzamu.
- Datu organizācija: Masīvi palīdz sakārtot datus strukturētā veidā, atvieglojot saistīto elementu pārvaldību.
Java masīvu trūkumi
- Fiksēts izmērs: Kad masīvs ir izveidots, tā lielumu nevar mainīt, kas var izraisīt atmiņas iztērēšanu, ja lielums ir pārvērtēts, vai nepietiekama krātuves, ja tas tiek novērtēts par zemu.
- Veida viendabīgums: Masīvi var glabāt tikai viena datu tipa elementus, kas var prasīt papildu apstrādi jaukta veida datiem.
- Ievietošana un dzēšana: Elementu ievietošana vai dzēšana, īpaši masīva vidū, var būt dārga, jo var būt nepieciešams pārvietot elementus.
Saistītās ziņas
- Robains masīvs Java valodā
- Katrai cilpai Java
- Masīvu klase Java valodā