Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Si të vendosni një grup dydimensional në java. Java Array

Është një koleksion i renditur, ose listë me numra, vlerash lidhje tek i cili ekzekutohet me emrin e përbashkët. Këto mund të jenë vlera primitive, objekte apo edhe vargje të tjera, por të gjitha vlerat e grupeve duhet të jenë të të njëjtit lloj. Lloji i grupit është identik me llojin e vlerave që përmban.

Vargjet janë lloje të të dhënave referente, në fakt, si të gjitha llojet e tjera, përveç atyre primitive. Më lejoni t'ju kujtoj përsëri se në Java gjithçka është një objekt, përjashtimet e vetme janë llojet primitive.

Vargjet mund të jenë njëdimensionale dhe shumëdimensionale.

Procesi i krijimit të një grupi mund të ndahet në tre faza:

  • Njoftim ( deklaratë)
  • Krijim ( instant)
  • Inicializimi ( inicializimi)

Deklarata e vargut

Në këtë fazë, vetëm variabël i llojit lidhje (referencë) për grup që përmban llojin e grupit. Për këtë, shkruhet emri i llojit të elementeve të grupit, kllapat katrore tregojnë se deklarohet një referencë për një grup në vend të një ndryshoreje të thjeshtë, dhe emrat e variablave të llojit të referencës janë renditur, për shembull:

numrat ; // numrat i referohen një grupi ints
Varg rr ; // str është një referencë për një grup vargjesh
bajt
dyBajt ; // referencë twoBytes në një grup bajtesh dydimensionale
karakter
letra , shifra ; // shkronjat dhe shifrat janë referenca për vargjet e karaktereve

Në thelb, deklarimi i vargjeve është saktësisht i njëjti operacion si deklarimi i çdo lloji tjetër të të dhënave, megjithëse ka një sintaksë paksa të ndryshme, pasi ato janë të gjitha të njëjtat vargje.

Java mbështet një sintaksë tjetër për deklarimin e variablave të vargjeve, e cila është e pajtueshme me C dhe C ++. Sipas kësaj sintakse, një ose më shumë palë kllapa katrore ndjekin emrin e ndryshores, jo emrin e tipit:

arrayOfBytes ; // Njëlloj si arrayOfBytes byte
bajt arrayOfArrayOfBytes ; // Njëlloj si arrayOfArrayOfBytes byte
bajt arrayOfArrayOfBytes ; // Njëlloj si arrayOfArrayOfBytes byte

Megjithatë, kjo sintaksë është shpesh konfuze dhe duhet shmangur. Në shembullin e mëposhtëm, është e lehtë të ngatërrohet se çfarë nënkuptohet:

normat , Norma maksimale ; // ndoshta keni dashur të deklaroni dy vargje?

Kjo sintaksë nuk rekomandohet, pasi tashmë është thënë se është konfuze, përveç kësaj, në konventat për formatimin e kodit Java rekomandohet sintaksa që u dha së pari, domethënë, kllapat katrore ndjekin menjëherë llojin e grupit të deklaruar. .

Në këtë rast, deklarohet një grup vlerash të llojit float me normat e emrit dhe një variabël i llojit float - maxRate.

Kjo do të thotë, nëse kllapat katrore shfaqen menjëherë pas llojit të grupit të deklaruar, atëherë të gjitha variablat që deklarohen në këtë rresht janë referenca për vargjet e llojit të deklaruar, dhe nëse kllapat janë në të djathtë të variablës, atëherë vetëm është një referencë për grupin e tipit të deklaruar.

Duhet kuptuar se ky operacion i deklarimit të një grupi nuk krijon ende një grup, por vetëm deklaron një variabël që është një referencë për të, i cili nuk mund të përdoret në program pa inicializim, pasi përpiluesi do të gjenerojë një gabim që ndryshorja e grupit nuk është inicializuar.

Derisa të përcaktohet një variabël i deklaruar i grupit, ai mund të përmbajë (nëse caktoni) një vlerë i pavlefshëm... Dhe vetëm pas përcaktimit do të përmbajë një lidhje me një objekt specifik.

Nuk është e mundur të specifikohet gjatësia e një grupi kur deklarohet një variabël i grupit, pasi madhësia është rreptësisht një funksion i objektit të grupit, jo një referencë për të..

Krijimi (instant) i një grupi

Në këtë fazë, tregohet numri i elementeve të grupit, i quajtur madhësia e tij, hapësira i ndahet grupit në RAM, ndryshorja e referencës caktohet nga operatori = adresa e grupit. Të gjitha këto veprime kryhen nga operatori i ri e ndjekur nga një lloj elementet e grupit. Për shembull:

= i ri karakter [ 10 ] ;

Por vlen të theksohet sërish se para kësaj shkronjat e ndryshueshme duhet të deklarohen si një grup. Për ta bërë më të qartë, ajo mund të përfaqësohet si kjo:

letra ; // shkronjat e deklaruara si referencë për një grup char
letra = i ri karakter [ 10 ] ; // krijoi një grup char me 10 elementë

Kur krijohet një grup me këtë sintaksë, të gjithë elementët e grupit inicializohen automatikisht në vlerat e tyre të paracaktuara.... Kjo është e rreme për vlerat boolean, "\ u0000" për vlerat e karaktereve, 0 për numrat e plotë, 0.0 për vlerat me pikë lundruese dhe null për objektet ose vargjet.

Në Java, madhësia e një grupi është fikse. Vargu i krijuar nuk mund të rritet ose zvogëlohet. Madhësia e dëshiruar e grupit të gjeneruar jepet nga një numër i plotë jo negativ... Por në çdo kohë një variabli të një lloji vargu mund t'i caktohet një grup i ri me madhësi të ndryshme. Kjo do të thotë, mund të caktohet një referencë për një grup tjetër të të njëjtit lloj si ndryshorja e deklaruar.

Indekset e grupeve gjithmonë fillojnë me 0.

Dy operacionet e para, deklarimi dhe krijimi i një grupi, mund të kombinohen në një deklaratë. Për shembull:

letra = i ri karakter [ 10 ] ;

Ky operator është i barabartë me dy të mësipërmet.

Pas këtij operacioni, shkronjat e ndryshueshme do të përmbajnë tashmë një referencë për grupin, dhe nëse përpiqemi të shfaqim vlerën e tij, do të marrim një vlerë diçka si ;
ndër b = a;

Por duhet pasur parasysh se variablat a dhe b tregoni në të njëjtin grup. Kjo mund të jetë konfuze në fillim, por nëse mbani mend se kemi të bëjmë me lloje të të dhënave referencë, atëherë gjithçka bie në vend. Nëse kjo pikë nuk është e qartë, atëherë pak më vonë do t'i analizojmë të gjitha me shembuj.

= i pavlefshëm ;

Pas kësaj, grupi i treguar nga kjo lidhje humbet nëse nuk do të kishte referenca të tjera për të..

Madhësia ose gjatësia e një vargu mund të merret duke përdorur një konstante gjatësia i cili përcaktohet për çdo varg dhe kthen gjatësinë e tij. Tashmë e kemi përdorur më shumë se një herë në shembujt kur kemi punuar me argumente të kaluara në vijën komanduese.

Mund të krijoni dhe përdorni vargje me gjatësi zero (varg bosh). Për shembull:

copa = i ri logjike [ 0 ] ;

Një grup i tillë nuk mund të inicializohet, pasi thjesht nuk ka elementë që mund të inicializohen. Menjëherë lind pyetja, pse u duhen fare këto grupe boshe? Por ato janë të nevojshme dhe madje shumë të dobishme!

Është zakon të përdoret një grup bosh në ato vende të programit ku nuk dihet paraprakisht nëse do të ketë elementë apo jo. Nëse ka elementë, atëherë kthehet një grup jo bosh, nëse nuk ka elementë - një grup bosh. Një shembull është një grup vargjesh që i kalohet metodës main () dhe përmban argumente të linjës së komandës, dhe nëse ato nuk janë të pranishme, kthehet një grup bosh.

Një grup bosh është më i mirë se i pavlefshëm sepse nuk kërkon një if të veçantë por për t'u përpunuar. E njëjta gjë vlen edhe për listat dhe koleksionet e tjera. Kjo është arsyeja pse ekzistojnë metoda Collections.emptyList, valaSet, whiteMap.

Inicializimi i një vargu

Në këtë fazë, elementët e grupit marrin vlerat e tyre fillestare. Ka disa mënyra për të inicializuar elementët e grupit me vlera:

  1. Cakto një vlerë specifike për secilin element të grupit (kjo mund të bëhet, për shembull, në një lak, por para kësaj grupi duhet të deklarohet dhe krijohet tashmë)
  2. Inicializoni një grup duke numëruar vlerat e elementeve të tij në kllapa kaçurrelë (kjo mund të bëhet si në fazën e deklarimit ashtu edhe në fazën e krijimit, por sintaksa është e ndryshme)

Ju mund t'i referoheni një elementi specifik të një grupi me indeksin e tij e cila fillon nga e para siç është përmendur tashmë.

Indekset mund të specifikohen nga çdo shprehje numër i plotë, përveç llojit gjatë , për shembull a, a, a [++ i]. Sistemi Java Runtime siguron që vlerat e këtyre shprehjeve të mos kalojnë kufijtë e gjatësisë së grupit. Nëse dalja ndodh, interpretuesi Java do të ndalojë ekzekutimin e programit dhe do të printojë në konsolë një mesazh që indeksi i grupit ka shkuar përtej kufijve të përcaktimit të tij ( ArrayIndexOutOfBoundsException).

Le të shqyrtojmë një shembull të metodës së parë të inicializimit:

ar = i ri ndër [ 2 ] ;
ar[ 0 ] = 1 ;
ar[ 1 ] = 2 ;

Metoda e dytë e inicializimit mund të zbatohet në mënyra të ndryshme.

Inicializimi i grupit mund të kombinohet me hapin e krijimit, por para këtij operacioni, grupi duhet të deklarohet tashmë... Për shembull:

ar ; // deklarata e vargut
ar = i ri ndër { 1 , 2 } ; // krijoni dhe inicializoni

Para krijimit dhe inicializimit të një vargu ar tashmë është bërë e ditur.

Ju gjithashtu mund të inicializoni një grup në fazën e deklarimit të tij me sintaksën e mëposhtme:

ar = { 1 , 2 } ; // deklarimi, krijimi dhe inicializimi i grupit

Kujdes! Kjo sintaksë e inicializimit të grupit funksionon vetëm kur deklarohet një grup dhe kombinon të tre operacionet njëherësh - deklarimin, krijimin dhe inicializimin. Nëse grupi tashmë është deklaruar, atëherë kjo sintaksë nuk mund të përdoret. Përpiluesi do të hedhë një gabim. Kjo eshte:

ndër ar ; // deklarata e vargut
ar = { 1 , 2 } ; // GABIM!!! krijimi dhe inicializimi i një vargu

Një veprim i tillë nuk do të funksionojë.

Ju gjithashtu mund ta inicializoni atë në fazën e deklarimit dhe në një mënyrë paksa të ndryshme:

ar = i ri ndër { 1 , 2 } ; // deklarimi, krijimi dhe inicializimi

Megjithatë, kjo sintaksë është më e gjatë. Nëse e keni vënë re, atëherë kjo sintaksë është gjithashtu një kombinim i të tre operacioneve: deklarimi, krijimi dhe inicializimi.

Java ofron një sintaksë që mbështet vargje anonime (ato nuk u caktohen variablave dhe për këtë arsye nuk kanë emra). Ndonjëherë një grup duhet të përdoret vetëm një herë (për shembull, për ta kaluar në një metodë), prandaj, nuk dëshironi të humbni kohë duke e caktuar atë në një ndryshore, kështu që mund të përdorni menjëherë rezultatin e operatorit i ri... Për shembull:

. jashtë . println( i ri karakter { "H", "e", "l", "l", "o"}) ;

Sintaksa për inicializimin e vargjeve me kllapa kaçurrelë quhet literale sepse përdor një grup literal për inicializim.

Është e rëndësishme të kuptohet se vargjet literale krijohen dhe inicializohen në kohën e ekzekutimit, jo në kohën e përpilimit.... Konsideroni vargun e mëposhtëm fjalë për fjalë:

Numrat perfekt = { 6 , 28 } ;

Ai përpilohet në bytekodin Java si kjo:

Numrat perfekt = i ri ndër [ 2 ] ;
Numrat perfekt[ 0 ] = 6 ;
Numrat perfekt[ 1 ] = 28 ;

Prandaj, nëse keni nevojë të vendosni shumë të dhëna në një program Java, është më mirë të mos i përfshini ato drejtpërdrejt në grup, pasi përpiluesi Java do të duhet të krijojë shumë bytekode të inicializimit të grupeve, dhe më pas interpretuesi Java do të ketë për të ekzekutuar me kujdes gjithë këtë kod. Në raste të tilla, është më mirë të ruani të dhënat në një skedar të jashtëm dhe t'i lexoni ato në program në kohën e ekzekutimit.

Megjithatë, fakti që Java inicializon grupin në kohën e ekzekutimit ka implikime të rëndësishme. Kjo do të thotë që elementët e një grupi literal janë shprehje arbitrare të vlerësuara në kohën e ekzekutimit, jo shprehje konstante të vlerësuara nga përpiluesi.... Për shembull:

pikë = { rrethi1.getCenterPoint () , circle2.getCenterPoint () } ;

Tani le të praktikojmë pak.

Metoda e njohur kryesore () përdor aftësinë për të kthyer një grup me gjatësi zero nëse nuk ka argumente në vijën e komandës, gjë që ju lejon të shmangni përdorimin e deklaratës if për të kontrolluar për null në mënyrë që të shmangni një gabim gjatë ekzekutimit të programit. .

Kjo do të thotë, ne mund ta përdorim menjëherë grupin në një lak, megjithëse respektojmë rregullat në mënyrë që të mos shkojmë përtej indeksit maksimal.

Në fillim të programit, ne shtypim gjatësinë e grupit, dhe më pas, në lakin e parë, shtypim në mënyrë sekuenciale të gjitha vlerat e elementeve të grupit. Lakja e dytë bën të njëjtën gjë, por në një mënyrë të shtrembëruar.

Shembulli i dytë, përshëndetje për të kënaqur trurin tuaj për të zgjeruar vetëdijen tuaj, nuk jeni mërzitur, keni ditur ta bëni atë, por si nuk është e nevojshme, mirë, thjesht për qëllime edukative. Ju mund të kuptoni se si funksionon cikli i dytë në kohën e lirë.

Ky program gjeneron daljen e mëposhtme:

Në rastin e parë, ne nuk futëm asnjë argument, kështu që morëm një grup me gjatësi zero, i cili nuk u përpunua në sythe, pasi nuk i plotëson kushtet e lakut.

Në rastin e dytë, ne i kaluam argumentet në vijën e komandës dhe për këtë arsye grupi u përpunua në sythe.

Vargjeve(vargjet) janë grupe të renditura elementësh të të njëjtit lloj. Elementet e një grupi mund të jenë objekte të llojeve të thjeshta dhe të referencës, duke përfshirë referenca për vargje të tjera. Vargjet janë vetë objekte dhe

trashëgojnë klasën Object. Njoftim

int ia = int e re;

Përcakton një grup të quajtur ia, i cili fillimisht tregon një grup prej tre elementësh Int.

Madhësia e grupit nuk është e specifikuar në deklaratën e grupit. Numri i elementeve të një vargu specifikohet kur krijohet duke përdorur operatorin e ri. Gjatësia e grupit është fikse në momentin e krijimit dhe nuk mund të ndryshohet më vonë. Megjithatë, e ndryshueshme lloji i grupit (në shembullin tonë - ia) në çdo kohë mund të caktohet një grup i ri me një dimension të ndryshëm.

Elementët e grupit arrihen nga vlerat e numrave të tyre të indeksit.

Elementi i parë i grupit ka indeksin zero (0), dhe i fundit është gjatësia - 1. Elementi i grupit arrihet duke specifikuar emrin e grupit dhe vlerën e indeksit, të mbyllura në kllapa katrore, [dhe]. në shembullin e mëparshëm, ia do të jetë elementi i parë në grup, dhe ia do të jetë i fundit. Sa herë që një element i grupit aksesohet nga indeksi, sistemi Java e ekzekutimit kontrollon nëse vlera e indeksit është brenda kufijve të pranueshëm dhe hedh një ArraylndexOutOfBoundsException nëse testi është i rremë. 6 Shprehja e indeksit duhet të jetë e tipit int - kjo është e vetmja gjë që kufizon numrin maksimal të elementeve të grupit.

Gjatësia e një vargu është e lehtë për t'u përcaktuar duke përdorur fushën e gjatësisë së objektit të grupit (i cili është në mënyrë implicite publike dhe përfundimtare). Më poshtë është kodi i shtuar nga shembulli i mëparshëm, në të cilin ekzekutohet një Loop për të shfaqur përmbajtjen e secilit element në grupin ia:

për (int i = o; i< ia.length; i++)

system.out.println (i + ":" + ia [i]);

Zakonisht thirret një grup me gjatësi zero (d.m.th. një pa elementë). bosh. Vini re se një referencë null për një grup dhe një referencë boshe e vargut janë gjëra krejtësisht të ndryshme. Një grup bosh është një grup real pa elementë në të. Një grup bosh ofron një alternativë të përshtatshme për null kur ktheheni nga një metodë. Nëse metoda është e aftë të kthejë null, kodi i aplikacionit në të cilin thirret metoda duhet të krahasojë vlerën e kthyer me null përpara se të vazhdohet me operacionet e mbetura. Nëse metoda kthen një grup (ndoshta bosh), nuk nevojiten kontrolle shtesë - natyrisht, përveç atyre që kanë të bëjnë me gjatësinë e grupit dhe duhet të kryhen në çdo rast.

Lejohet një formë tjetër e deklarimit të grupit, në të cilën kllapat katrore specifikohen pas identifikuesit të grupit, dhe jo pas emrit të llojit të tij:

int ia = int e re;

Sintaksa më e vjetër, megjithatë, konsiderohet e preferueshme sepse deklarata e tipit është më kompakte.

Modifikuesit në deklaratat e vargjeve

Rregullat për përdorimin e grupeve të caktuara në deklarata modifikuesit janë të zakonshme dhe varen vetëm nga fakti nëse grupi i përket fushave ose variablave lokale. Ekziston një gjë që është e rëndësishme të mbani mend - modifikuesit aplikohen në grup si të tillë, por jo në elementët e tij individualë. Nëse flamuri përfundimtar specifikohet në deklaratën e grupit, kjo do të thotë vetëm se referenca ndaj grupit nuk mund të ndryshohet pas krijimit të tij, por nuk e ndalon në asnjë mënyrë mundësinë e ndryshimit të përmbajtjes së elementeve individuale të grupit. Gjuha nuk lejon specifikimin e ndonjë modifikuesi (të themi, përfundimtar ose jolatile) për elementët e grupit.

Vargjet shumëdimensionale

Java mbështet aftësinë për të deklaruar vargjeve shumëdimensionale(vargje shumëdimensionale) (d.m.th., vargje, elementët e të cilëve janë vargje të tjera), Kodi për deklarimin e një matrice dydimensionale dhe shfaqjen e përmbajtjes së elementeve të saj në ekran mund të duket kështu:

float mat = noton i ri;

setupMatrix (mat);

për (int y = o; y< mat.length; у++) {

për (int x = o; x< mat[y].length; х++)

system.out.print (mat [y] [x] + "");

system.out.println ();

Kur krijoni një grup, të paktën dimensioni i tij i parë, "më i majtë" duhet të specifikohet. Dimensionet e tjera lejohen të mos specifikohen - në këtë rast, ato do të duhet të përcaktohen më vonë. Specifikimi i të gjitha dimensioneve në të njëjtën kohë në operatorin e ri është mënyra më koncize për të krijuar një grup, duke shmangur nevojën për të përdorur operatorë të rinj shtesë. Shprehja e mësipërme për deklarimin dhe krijimin e një shtrese grupi është ekuivalente me fragmentin e mëposhtëm të kodit:

float mat = noton i ri;

për (int y = o; y< mat.length; у++)

mat [y] = noton i ri;

Kjo formë deklarimi ka avantazhin që lejon, së bashku me marrjen e vargjeve me të njëjtat dimensione (të themi, 4 x 4), të ndërtohen grupe vargjesh me dimensione të ndryshme të nevojshme për ruajtjen e sekuencave të caktuara të të dhënave.

Inicializimi i vargjeve

Kur krijohet një grup, çdo elementi i caktohet një vlerë e paracaktuar në varësi të llojit të grupit: zero (0) për llojet numerike, '\ u0000 ′ _ për char, false për boolean dhe null për llojet e referencës. Duke deklaruar një grup të një lloji referimi, ne në fakt po përcaktojmë një grup n e ndryshueshme të këtij lloji. Merrni parasysh pjesën e mëposhtme të kodit:

Attr attrs = Attr e re;

për (int i = o; i< attrs.length; i++)

attrs [i] = Attr e re (emrat [i], vlerat [i]);

Pas ekzekutimit të shprehjes së parë që përmban operatorin e ri, ndryshorja attrs do të marrë një referencë për një grup prej 12 variablash, të cilat janë inicializuar në null. Objektet Attr si të tillë do të krijohen vetëm gjatë ciklit.

Një grup mund të inicializohet (në të njëjtën kohë me deklarimin e tij) me anë të një konstruksioni në kllapa kaçurrelë, i cili rendit vlerat origjinale të elementeve të tij:

Rreziqet e vargut = ("Luanët", "Tigrat", "Arinjtë");

Pjesa e mëposhtme e kodit do të japë të njëjtin rezultat:

Rreziqet e vargut = Varg i ri; rreziqe = "Luanët";

rreziqe = "Tigrat";

rreziqe = "Arinjtë";

Forma e parë, e cila përfshin specifikimin e një liste inicializuesish në kllapa kaçurrelë, nuk kërkon përdorimin e qartë të operatorit të ri - quhet indirekt nga sistemi i funksionimit. Gjatësia e grupit në këtë rast përcaktohet nga Numri i vlerave të iniciatorit. Mundësia e specifikimit të qartë të operatorit të ri është gjithashtu e lejuar, por dimensioni duhet të hiqet, pasi më parë, përcaktohet nga sistemi i funksionimit:

Rreziqet e vargut = Vargu i ri ("Luanët", "Tigrat", "Arinjtë");

Kjo formë e deklarimit dhe inicializimit të një grupi mund të përdoret kudo në kod, për shembull, në një shprehje thirrjeje të metodës:

printStringsCnew String ("një", "dy", "tre"));

Një grup pa emër që krijohet në këtë mënyrë quhet anonim(anonim).

Vargjet e vargjeve mund të inicializohen me sekuenca të mbivendosura të vlerave origjinale. Më poshtë është një shembull i deklarimit të një grupi që përmban rreshtat e parë të të ashtuquajturit trekëndëshi i Paskalit, ku çdo rresht përshkruhet nga grupi i vet i vlerave.

int pascalsTrekëndësh = (

{ 1, 4, 6, 4, 1 },

Indekset e grupeve shumëdimensionale renditen nga e jashtme në të brendshme. Kështu, për shembull, pascalsTriangle = "+ arr);)

Një version i thjeshtuar i ciklit për nxjerrjen e një grupi është si më poshtë:

Për (int inn: arr) (System.out.println ("arr [" + inn + "] =" + arr);)

Si mund të fshij një grup në Java?

Ju mund të fshini një grup në Java si kjo:

Si mund të marr gjatësinë e një grupi në Java?

Ne marrim gjatësinë e një grupi në Java si kjo:

int arrGjatësia = arr.gjatësia;

Si mund të marr elementin e parë të një grupi në Java?

int firstElem = arr;

Si të merrni elementin gjysmë të fundit të një grupi në Java?

int lastElem = arr;

Si mund të përcaktoj një grup me gjatësi të ndryshueshme në Java?

Si mund të përcaktoj një grup me gjatësi të ndryshueshme në Java? Në asnjë mënyrë. Kur përcaktoni një grup, atëherë vendosni gjatësinë e tij, nuk mund ta ndryshoni atë në të ardhmen. Në raste të tilla përdoren koleksione, për shembull: Vector, ArrayList, etj.

Pra, gjatësia e ndryshueshme e grupit nuk mund të jetë. Por ju mund të përdorni një ndryshore kur përcaktoni një grup. Po të jetë kështu:

int cd;
int ab = int e re; // Gabim.

atëherë marrim një gabim, gjatësia e grupit nuk mund të jetë e ndryshueshme.

Ju duhet të vendosni vlerën e cd:

int cd = 10;
int ab = int e re;

Tani mirë. Ndryshimi i variablës cd pas përcaktimit të grupit nuk do të ndikojë në grup, d.m.th. gjatësia e tij nuk do të ndryshojë. Shembull:

Int cd = 10; int ab = int e re; cd = 12 // Kjo mund të bëhet arrLength = ab.length; System.out.println ("gjatësia e grupit ab =" + arrGjatësia); // Rezultatet: gjatësia e grupit ab = 10 ab = 4; // Dhe këtu është një gabim

Ne marrim gabimin:

Përjashtim në thread "main" java.lang.ArrayIndexOutOfBoundsException: 11

Indeksi maksimal i grupit tonë është 9. Ndryshimi i vlerës së variablit cd nuk ndikon në varg, sepse ai tashmë është i përcaktuar dhe gjatësia e tij është konstante.

Variablat mund të përdoren për t'iu referuar elementeve të grupit:

Int var = 1;
int elem = arr;
var = 2;
elem = arr;

Grup karakteresh Java

Një shembull i një grupi karakteresh në Java dhe dalja e tij:

Char charArr = ("S", "B", "P"); për (int han = 0; bujtinë< charArr.length; inn++) { System.out.println("charArr[" + inn + "] = " + charArr); }

Si mund të plotësoj një grup në Java?

Mund ta plotësoni grupin duke përdorur metodën e mbushjes statike.

Array (Array anglisht)është një objekt që ruan një numër fiks vlerash të të njëjtit lloj. Me fjalë të tjera, një grup është një koleksion i numëruar i variablave. Ndryshorja në grup quhet element vargu, dhe pozicioni i tij në grup jepet nga indeks... Për shembull, ne duhet të ruajmë 50 emra të ndryshëm, duhet të pranoni se është e papërshtatshme të krijojmë një variabël të veçantë për secilin emër, kështu që ne do të përdorim një grup. Numërimi i elementeve të grupit fillon nga 0, dhe gjatësia e grupit vendoset në momentin e krijimit të tij dhe fiksohet.

Për qartësi, fotografia me të cilën bëra Tutoriali Java.

Për të krijuar një grup, duhet ta deklaroni atë, të rezervoni memorie për të dhe ta inicializoni atë.

Deklarata e grupit në Java

Kur krijoni një grup në Java, hapi i parë është ta deklaroni atë. Kjo mund të bëhet si më poshtë:

Int myFirstArray;

Ju gjithashtu mund të deklaroni një grup si ky:

Int mySecondArray;

Megjithatë, kjo nuk është e mirëpritur nga konventat Java, pasi kllapat tregojnë se kemi të bëjmë me një grup dhe është më logjike kur ato janë pranë emërtimit të tipit.

Bazuar në këtë shembull, ne deklaruam 2 vargje me emrat myFirstArray dhe MySecondArray... Të dy vargjet do të përmbajnë elementë të tipit ndër.

Në mënyrë të ngjashme, ju mund të deklaroni një grup të çdo lloji:

Byte anArrayOfBytes; anArrayOfShorts të shkurtër; anArrayOfLongs të gjata; float anArrayOfFloats; dyfishtë anArrayOfDoubles; anArrayOfBooleans boolean; char anArrayOfChars; Vargu anArrayOfStrings; ...

Lloji i një grupi specifikohet si tip, ku lloji është lloji i të dhënave të elementeve që përmban. Kllapat janë një shenjë e veçantë që variablat përmbahen në një grup. Emri i grupit mund të jetë çdo gjë, megjithatë, ai duhet të përputhet.

Vargjet mund të krijohen jo vetëm nga variabla të llojeve bazë, por edhe nga objekte arbitrare.

Kur një grup deklarohet në Java, madhësia e tij nuk specifikohet dhe memoria nuk është e rezervuar për të. Ai krijon vetëm një referencë për grupin.

Rezervimi i memories për një grup dhe inicializimi i tij.

Int myFirstArray; myFirstArray = int e re;

Në shembullin tonë, ne kemi krijuar një grup prej 15 elementësh të tipit ndër dhe ia caktoi variablit të deklaruar më parë myFirstArray.

Ju gjithashtu mund të deklaroni një emër grupi dhe të rezervoni memorie për të në të njëjtën linjë.

Int myArray = int e re;

Kur krijoni një grup duke përdorur fjalën kyçe i ri, të gjithë elementët e grupit inicializohen automatikisht në vlera zero. Për t'i caktuar vlerat e tyre fillestare elementeve të grupit, është e nevojshme ta mbani atë inicializimi... Inicializimi mund të kryhet si element pas elementi

MyFirstArray = 10; // inicializoj elementin e parë myFirstArray = 20; // inicializoj elementin e dytë myFirstArray = 30; // etj.

dhe në një lak, duke përdorur indeksin, duke kaluar nëpër të gjithë elementët e grupit dhe duke u caktuar vlerat atyre.

Për (int i = 0; i< 15; i++){ myFirstArray[i] = 10; }

Siç mund ta shihni nga shembujt e mëparshëm, për t'iu referuar një elementi të grupit, duhet të specifikoni emrin e tij dhe, më pas, në kllapa katrore - indeksin e elementit. Një element grupi me një indeks specifik sillet njësoj si një ndryshore.

Le të shqyrtojmë krijimin dhe inicializimin e një grupi në shembullin e mëposhtëm. Në të, ne krijojmë një grup që përmban numrat 0-9 dhe shtypim vlerat në tastierë.

// krijoni dhe inicializoni një grup int numberArray = new int; për (int i = 0; i< 10; i++){ numberArray[i] = i; } //вывод значений на консоль for(int i = 0; i < 10; i++){ System.out.println((i+1) + "-й элемент массива = " + numberArray[i]); }

Formulari i thjeshtuar i regjistrimit

Ju gjithashtu mund të përdorni shënime të thjeshtuara për të krijuar dhe inicializuar një grup. Nuk përmban asnjë fjalë i ri, dhe vlerat fillestare të grupit janë renditur në kllapa.

Int myColor = (255, 255, 0);

Këtu, gjatësia e grupit përcaktohet nga numri i vlerave midis kllapave dhe të ndara me presje. Kjo është më e përshtatshme për krijimin e vargjeve të vogla.

Përcaktimi i madhësisë së një vargu

Madhësia e grupit nuk është gjithmonë e dukshme, kështu që për ta gjetur atë, duhet të përdorni veçorinë length, e cila kthen gjatësinë e grupit.

MyColor.gjatësia;

Ky kod do të na ndihmojë të zbulojmë se gjatësia e grupit myColor është 3.

Shembull: Duke pasur 4 numra, duhet të gjeni minimumin

Numrat int = (-9, 6, 0, -59); int min = numrat; për (int i = 0; i< numbers.length; i++){ if(min>numrat [i]) min = numrat [i]; ) System.out.println (min);

Ushtrime në vargje njëdimensionale në Java:

  1. Krijo një grup që përmban 10 numrat e parë tek. Printoni elementët e grupit në tastierë në një rresht, të ndarë me presje.
  2. Duke pasur parasysh një grup të dimensionit N, gjeni elementin më të vogël të grupit dhe printojeni atë në tastierë (nëse ka disa elementë më të vegjël, printojini të gjithë).
  3. Në grupin nga detyra 2. gjeni elementin më të madh.
  4. Ndërroni elementët më të mëdhenj dhe më të vegjël të grupit. Shembull: jepet një grup (4, -5, 0, 6, 8). Pas zëvendësimit do të duket si (4, 8, 0, 6, -5).
  5. Gjeni mesataren aritmetike të të gjithë elementëve në grup.

Përditësimi i fundit: 09.11.2018

Një grup përfaqëson një grup vlerash të të njëjtit lloj. Deklarimi i një grupi është si deklarimi i një variabli të rregullt që ruan një vlerë të vetme, dhe ka dy mënyra për të deklaruar një grup:

emri i grupit të llojit të të dhënave; // emri i grupit të një lloji të të dhënave;

Për shembull, le të përcaktojmë një grup numrash:

Numrat Int; int nums2;

Pas deklarimit të grupit, ne mund ta inicializojmë atë:

Numrat Int; nums = int e re; // grup prej 4 numrash

Vargu krijohet duke përdorur konstruksionin e mëposhtëm: tipi_i i ri i të dhënave [numri_e_elementeve], ku new është një fjalë kyçe që shpërndan memorie për numrin e elementeve të specifikuar në kllapa. Për shembull, nums = new int; - kjo shprehje krijon një grup prej katër elementësh int, dhe secili element do të ketë një vlerë të paracaktuar prej 0.

Ju gjithashtu mund ta inicializoni atë menjëherë kur deklaroni një grup:

Int nums = int e re; // grup me 4 numra int nums2 = int i ri; // grup prej 5 numrash

Me këtë inicializim, të gjithë elementët e grupit kanë një vlerë të paracaktuar. Për llojet numerike (përfshirë char), ky numër është 0, për boolean është false dhe për objektet e tjera është null. Për shembull, për int, parazgjedhja është 0, kështu që grupi i numrave të mësipërm do të jetë katër zero.

Sidoqoftë, mund të vendosni gjithashtu vlera specifike për elementët e grupit kur e krijoni atë:

// këto dy metoda janë ekuivalente int nums = new int (1, 2, 3, 5); int nums2 = (1, 2, 3, 5);

Duhet të theksohet se në këtë rast madhësia e grupit nuk tregohet në kllapa katrore, pasi llogaritet nga numri i elementeve në kllapat kaçurrelë.

Pas krijimit të një grupi, ne mund t'i referohemi çdo elementi të tij nga indeksi, i cili kalohet në kllapa katrore pas emrit të ndryshores së grupit:

Int nums = int e re; // vendosni vlerat e elementeve të grupit nums = 1; numra = 2; numra = 4; numra = 100; // merrni vlerën e elementit të tretë të grupit System.out.println (nums); // 4

Elementet e grupit indeksohen me 0, kështu që në këtë rast, për t'iu referuar elementit të katërt në grup, duhet të përdorim shprehjen nums.

Dhe meqenëse kemi një grup të përcaktuar vetëm për 4 elementë, nuk mund t'i referohemi, për shembull, elementit të gjashtë: nums = 5; ... Nëse përpiqemi ta bëjmë këtë, do të kemi një gabim.

Gjatësia e vargut

Vetia më e rëndësishme që kanë vargjet është vetia gjatësia, e cila kthen gjatësinë e një vargu, domethënë numrin e elementeve të tij:

Int nums = (1, 2, 3, 4, 5); gjatësia int = numrat.gjatësia; // 5

Indeksi i fundit shpesh është i panjohur dhe për të marrë elementin e fundit të një grupi, mund të përdorim këtë veti:

Int fundit = numra;

Vargjet shumëdimensionale

Më parë kemi konsideruar vargje njëdimensionale, të cilat mund të përfaqësohen si një zinxhir ose një varg vlerash të të njëjtit lloj. Por përveç vargjeve njëdimensionale, ato mund të jenë edhe shumëdimensionale. Vargu më i famshëm shumëdimensional është një tabelë që përfaqëson një grup dydimensional:

Int nums1 = int i ri (0, 1, 2, 3, 4, 5); int nums2 = ((0, 1, 2), (3, 4, 5));

Vizualisht, të dy vargjet mund të përfaqësohen si më poshtë:

Vargu njëdimensional nums1
Vargu 2D nums2

Meqenëse grupi nums2 është dydimensional, ai është një tabelë e thjeshtë. Mund të ishte krijuar edhe kështu: int nums2 = new int; ... Numri i kllapave katrore tregon dimensionin e grupit. Dhe numrat në kllapa janë për numrin e rreshtave dhe kolonave. Dhe gjithashtu, duke përdorur indekset, ne mund të përdorim elementet e grupit në program:

// vendosni elementin e kolonës së parë të rreshtit të dytë nums2 = 44; System.out.println (nums2);

Një deklaratë e grupit 3D mund të duket kështu:

Int nums3 = int e re;

Varg i dhëmbëzuar

Vargjet shumëdimensionale mund të përfaqësohen gjithashtu si "vargje të dhëmbëzuara". Në shembullin e mësipërm, grupi dydimensional kishte 3 rreshta dhe tre kolona, ​​kështu që ne përfunduam me një tabelë të sheshtë. Por ne mund ta caktojmë çdo element në një grup dy-dimensional në një grup të veçantë me një numër të ndryshëm elementësh:

Int nums = int e re; nums = int e re; nums = int e re; nums = int e re;

per secilin

Një version i veçantë i ciklit for është për rrotullimin nëpër grupe elementësh, si vargje dhe koleksione. Është i ngjashëm me ciklin foreach që gjendet në gjuhë të tjera programimi. Deklarata e saj zyrtare:

Për (emri_ndryshores_tipi i të dhënave: kontejneri) (// veprimet)

Për shembull:

Array Int = int i ri (1, 2, 3, 4, 5); për (int i: grup) (System.out.println (i);)

Në këtë rast, një grup të dhënash të tipit int vepron si një kontejner. Më pas deklarohet një ndryshore e tipit int

E njëjta gjë mund të bëhet me versionin e rregullt të për:

Array Int = int i ri (1, 2, 3, 4, 5); për (int i = 0; i< array.length; i++){ System.out.println(array[i]); }

Në të njëjtën kohë, ky version i ciklit for është më fleksibël sesa për (int i: grup). Në veçanti, në këtë version, ne mund të ndryshojmë elementet:

Array Int = int i ri (1, 2, 3, 4, 5); për (int i = 0; i

Lak mbi vargje shumëdimensionale

int nums = new int ((1, 2, 3), (4, 5, 6), (7, 8, 9)); për (int i = 0; i< nums.length; i++){ for(int j=0; j < nums[i].length; j++){ System.out.printf("%d ", nums[i][j]); } System.out.println(); }

Së pari, krijohet një lak për të përsëritur mbi rreshtat, dhe më pas brenda ciklit të parë, krijohet një lak i brendshëm për të përsëritur mbi kolonat e një rreshti të caktuar. Në mënyrë të ngjashme, ju mund të përsërisni mbi vargje dhe grupe 3D me një numër të madh dimensionesh.

Artikujt kryesorë të lidhur