Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Windows 8
  • Cum se definește o matrice bidimensională în java. Matrice Java

Cum se definește o matrice bidimensională în java. Matrice Java

este o colecție ordonată sau o listă numerotată de valori legătură la care se executa prin nume comun. Ar putea fi ca valorile primitive, obiecte sau chiar alte matrice, dar toate valorile matricei trebuie să fie de același tip. Tipul unei matrice este identic cu tipul valorilor pe care le conține.

Matricele sunt tipuri de date de referință, de fapt, ca toate celelalte tipuri, cu excepția celor primitive. Permiteți-mi să vă reamintesc încă o dată că în Java totul este un obiect, singurele excepții sunt tipuri primitive.

Matricele pot fi unidimensionale sau multidimensionale.

Procesul de creare a unei matrice poate fi împărțit în trei etape:

  • Anunț ( declaraţie)
  • Creație ( instantare)
  • Inițializare ( initializare)

Declarație de matrice

În această etapă este determinat doar variabilă de tip legătură (referinţă) a matrice , care conține tipul matricei. Pentru a face acest lucru, notați numele tipului de elemente ale matricei, parantezele pătrate indică faptul că este declarată o referință la o matrice , mai degrabă decât o simplă variabilă, iar numele variabilelor de tip de referință sunt enumerate, de exemplu:

numere ; // numere se referă la o matrice de int
Şir str ; // str referință la o matrice de șiruri de caractere
octet
doi octeți ; // referință la doi octeți matrice bidimensională octeți
char
scrisori , cifre ; //referințe de litere și cifre la matrice de caractere

În esență, declararea tablourilor este exact aceeași operațiune cu declararea oricăror alte tipuri de date, deși are o sintaxă ușor diferită, deoarece acestea sunt încă tablouri.

Java acceptă o altă sintaxă de declarare a variabilelor matrice care oferă compatibilitate cu C și C++. Conform acestei sintaxe, una sau mai multe perechi paranteza patrata urmați numele variabilei, nu numele tipului:

arrayOfBytes ; // La fel ca byte arrayOfBytes
octet arrayOfArrayOfBytes ; // La fel ca byte arrayOfArrayOfBytes
octet arrayOfArrayOfBytes ; // La fel ca byte arrayOfArrayOfBytes

Cu toate acestea, această sintaxă este adesea confuză și ar trebui evitată. ÎN exemplul următor, este ușor de confundat ceea ce s-a vrut să spună:

ratele , maxRate ; // poate au vrut să declare două matrice?

Această sintaxă nu este recomandată, deoarece s-a spus deja că este confuză, în plus, în convențiile de formatare a codului Java, se recomandă sintaxa care a fost dată mai întâi, adică parantezele pătrate urmează imediat tipul matricei care se declara.

ÎN în acest caz, matrice de valori declarate tip plutitor cu ratele de nume și o variabilă float – maxRate.

Adică, dacă parantezele pătrate apar imediat după tipul matricei declarate, atunci toate variabilele care sunt declarate în această linie sunt referințe la matrice de tipul declarat, iar dacă parantezele apar în dreapta variabilei, atunci numai acesta este o referire la tabloul tipului declarat.

Ar trebui să se înțeleagă că această operațiune declararea unui tablou nu creează încă o matrice, ci declară doar o variabilă care este o referință la aceasta, care nu poate fi folosit într-un program fără inițializare, deoarece compilatorul va genera o eroare că variabila matrice nu este inițializată.

În timp ce o variabilă de matrice declarată este nedefinită, ea poate conține (dacă atribuiți) o valoare nul. Și numai după definire va conține un link către obiect specific.

Nu este posibil să specificați lungimea unui tablou atunci când declarați o variabilă matrice, deoarece dimensiunea este strict o funcție a obiectului matrice, nu referința acestuia.

Instanțierea matricei

În această etapă, este indicat numărul de elemente ale matricei, numit dimensiunea acestuia, este alocat spațiu pentru matrice în memorie cu acces aleator, variabila de referință este atribuită de operator = adresa matricei. Toate aceste acțiuni sunt efectuate de către operator nou urmată de tip elemente de matrice. De exemplu:

= nou char [ 10 ] ;

Dar este de remarcat încă o dată că înainte de aceasta, variabila litere trebuie declarată ca o matrice. Pentru a fi mai clar, poate fi reprezentat astfel:

scrisori ; // a declarat litere ca referință la o matrice char
scrisori = nou char [ 10 ] ; // a creat o matrice de caractere de dimensiunea 10 elemente

Când creați o matrice cu această sintaxă, toate elementele matricei sunt inițializate automat la valorile implicite. Acest lucru este fals pentru valorile booleene, „\u0000” pentru valorile char, 0 pentru valorile întregi, 0.0 pentru valorile flotante și nul pentru obiecte sau matrice.

În Java, dimensiunea unei matrice este fixă. Matricea creată nu poate fi mărită sau micșorată. Mărimea dorită a matricei create este specificată de un număr întreg nenegativ. Dar oricând tip variabil matricea poate fi potrivită matrice nouă dimensiune diferită. Adică, poate fi atribuită o referință la o altă matrice de același tip cu variabila declarată.

Indicii de matrice încep întotdeauna de la 0.

Primele două operații: declararea și crearea unui tablou pot fi combinate într-un singur operator. De exemplu:

scrisori = nou char [ 10 ] ;

Acest operator este echivalent cu cei doi de mai sus.

După această operație, variabila litere va conține deja o referință la matrice și dacă încercăm să afișăm valoarea acesteia, vom obține o valoare de genul ;
int b = A;

Dar trebuie să avem în vedere că variabilele AȘi b indică aceeași matrice. Acest lucru poate fi confuz la început, dar dacă vă amintiți că avem de-a face cu tipuri de date de referință, atunci totul cade la locul lor. Dacă acest punct nu este clar, atunci puțin mai târziu vom analiza toate acestea cu exemple.

= nul ;

După aceasta, matricea către care a indicat această legătură se pierde dacă nu existau alte linkuri către aceasta.

Mărimea sau lungimea unui tablou poate fi obținută folosind o constantă lungime , care este definit pentru fiecare matrice și returnează lungimea acesteia. L-am folosit de mai multe ori în exemple când am lucrat cu argumente transmise Linie de comanda.

Puteți crea și utiliza matrice de lungime zero (matrice goală). De exemplu:

biți = nou boolean [ 0 ] ;

Este imposibil să inițializați o astfel de matrice, deoarece pur și simplu nu are elemente care să poată fi inițializate. Apare imediat întrebarea: de ce naiba au nevoie de aceste matrice goale? Dar sunt necesare și chiar foarte utile!

Se obișnuiește să se folosească o matrice goală în acele locuri din program unde nu se știe dinainte dacă vor exista elemente sau nu. Dacă există elemente, atunci este returnată o matrice nevidă; dacă nu există elemente, este returnată o matrice goală. Un exemplu ar fi o matrice de șiruri care este transmisă metodei main() și care conține argumente de linie de comandă, iar dacă nu există, atunci este returnată o matrice goală.

O matrice goală este mai bună decât nul, deoarece nu necesită un if separat pentru procesare. Același lucru este valabil și pentru liste și alte colecții. De aceea există metodele Collections.emptyList, emptySet, emptyMap.

Inițializarea unui tablou

În această etapă, elementele matricei primesc valorile initiale. Există mai multe moduri de a inițializa elementele matricei cu valori:

  1. Atribuiți fiecărui element al matricei o anumită valoare (acest lucru se poate face, de exemplu, într-o buclă, dar înainte de aceasta matricea trebuie să fie deja declarată și creată)
  2. Inițializați o matrice listând valorile elementelor sale în acolade (acest lucru se poate face atât în ​​etapa de declarare, cât și în etapa de creare, dar sintaxa este diferită)

Puteți accesa un anumit element de matrice prin indexul său, care pornește de la zero, așa cum am menționat deja.

Indecii pot fi specificați prin orice expresii întregi, cu excepția tipului lung , de exemplu a , a , a[++i] . Performant sistem Java se asigură că valorile acestor expresii nu depășesc lungimea matricei. Dacă apare o ieșire, interpretul Java va opri executarea programului și va afișa un mesaj pe consolă care indică faptul că indexul matricei a depășit limitele definiției sale ( Indicele matricei este în afara limitelor).

Să ne uităm la un exemplu al primei metode de inițializare:

ar = nou int [ 2 ] ;
ar[ 0 ] = 1 ;
ar[ 1 ] = 2 ;

A doua metodă de inițializare poate fi implementată în moduri diferite.

Inițializarea matricei poate fi combinată cu etapa de creare, dar înainte de această operație tabloul trebuie deja declarat. De exemplu:

ar ; // declarație matrice
ar = nou int { 1 , 2 } ; // crearea și inițializarea

Înainte de a crea și inițializa matricea ar a fost deja anunțat.

De asemenea, puteți inițializa o matrice în etapa de declarare folosind următoarea sintaxă:

ar = { 1 , 2 } ; // declararea, crearea și inițializarea matricei

Atenţie! Această sintaxă de inițializare a matricei funcționează numai atunci când se declară o matrice și combină toate cele trei operațiuni: declarare, creare și inițializare. Dacă matricea este deja declarată, atunci această sintaxă nu poate fi utilizată. Compilatorul va arunca o eroare. Acesta este:

int ar ; // declarație matrice
ar = { 1 , 2 } ; // EROARE!!! crearea și inițializarea unui tablou

Acest tip de acțiune nu va funcționa.

De asemenea, puteți inițializa în etapa de declarare și puțin diferit:

ar = nou int { 1 , 2 } ; // declarare, creare și inițializare

Deși această sintaxă este mai lungă. Daca ai observat atunci această sintaxă aceasta este, de asemenea, o combinație a tuturor celor trei operațiuni: declarare, creare și inițializare.

Java oferă o sintaxă care acceptă matrice anonime (acestea nu sunt atribuite variabilelor și, prin urmare, nu au nume). Uneori trebuie să utilizați o singură matrice o singură dată (de exemplu, să-l transmiteți unei metode), așa că nu doriți să pierdeți timpul atribuind-o unei variabile, astfel încât să puteți utiliza imediat rezultatul operatorului nou. De exemplu:

. afară . println( nou char { "H", "e", "l", "l", "o"}) ;

Sintaxa pentru inițializarea matricelor folosind acolade se numește literal deoarece este folosit un literal de matrice pentru inițializare.

Este important să înțelegeți că tablourile literale sunt create și inițializate în timpul execuției programului, și nu în timpul compilării.. Luați în considerare următorul literal de matrice:

perfectNumbers = { 6 , 28 } ;

Compilează în bytecode Java astfel:

perfectNumbers = nou int [ 2 ] ;
perfectNumbers[ 0 ] = 6 ;
perfectNumbers[ 1 ] = 28 ;

Prin urmare, dacă trebuie să plasați program Java multe date, este mai bine să nu le includeți direct în matrice, deoarece compilatorul Java va trebui să creeze o mulțime de bytecode de inițializare a matricei și apoi interpretul Java va trebui să execute cu minuțiozitate tot acel cod. În astfel de cazuri, este mai bine să salvați datele în fișier externși citiți-le în program în timpul execuției acestuia.

Cu toate acestea, faptul că Java inițializează matricea în timpul execuției are implicații importante. Aceasta înseamnă că elementele unui tablou literal sunt expresii arbitrare evaluate în timpul execuției, mai degrabă decât expresii constante evaluate de compilator. De exemplu:

puncte = { circle1.getCenterPoint () , circle2.getCenterPoint () } ;

Acum hai să exersăm puțin.

Cunoscuta metodă main() folosește capacitatea de a returna o matrice de lungime zero dacă nu există argumente pe linia de comandă, ceea ce evită utilizarea instrucțiunii if pentru a verifica null pentru a evita erorile în timpul execuției programului.

Adică putem folosi imediat matricea într-o buclă, deși urmând regulile pentru a nu depăși indicele maxim.

La începutul programului, imprimăm lungimea matricei, iar apoi în prima buclă tipărim secvenţial toate valorile elementelor matricei. A doua buclă face același lucru, dar într-un mod răsucit.

Al doilea exemplu, salut, pentru a-ți face plăcere creierului, pentru a-ți extinde conștiința, nu te-ai plictisit, știai ce poți face, dar ce nu ar trebui să faci și doar în scopuri educaționale. Poate că în timpul liber vă puteți da seama cum funcționează al doilea ciclu.

Acest program generează următoarea ieșire:

În primul caz, nu am introdus niciun argument, așa că am ajuns cu o matrice de lungime zero, care nu a fost procesată în bucle pentru că nu a îndeplinit condițiile buclelor.

În al doilea caz, am trecut argumentele pe linia de comandă și, prin urmare, matricea a fost procesată în bucle.

Matrice(matrice) _ sunt mulțimi ordonate de elemente de același tip. Elementele unei matrice pot fi obiecte de tipuri simple și de referință, inclusiv Număr și referințe la alte matrice. Matricele în sine sunt obiecte și

moștenește clasa Object. Anunţ

int ia = new int;

Definește o matrice numită ia care indică inițial un set de trei Elemente tastați int.

Declarația matricei nu indică dimensiunea acesteia. Numărul de elemente ale matricei este specificat atunci când este creat folosind operatorul new. Lungimea matricei este fixă ​​în momentul creării și nu poate fi modificată ulterior. In orice caz, variabil tipul de matrice (în exemplul nostru – ia) o matrice nouă cu o dimensiune diferită poate fi atribuită în orice moment.

Elementele matricei sunt accesate de valorile numerelor lor de index.

Primul element al tabloului are un index, egal cu zero(0), iar ultima este lungimea – 1. Un element de matrice este accesat prin specificarea numelui matricei și a valorii indexului cuprinse între paranteze drepte, [ și ]. în exemplul anterior, primul element al tabloului ia va fi ia, iar ultimul element va fi ia. Ori de câte ori un element de matrice este accesat prin index, timpul de execuție Java verifică dacă valoarea indexului este în limitele acceptabile și aruncă o excepție de tip ArrayIndexOutOfBoundsException dacă rezultatul verificării este fals. 6 Expresia index trebuie să fie de tip int - asta este tot ce există suma maxima elemente de matrice.

Lungimea unui tablou poate fi determinată cu ușurință folosind câmpul de lungime al obiectului matrice (care este implicit furnizat cu atributele publice și finale). Mai jos este codul actualizat al exemplului anterior, care prevede executarea unei bucle care asigură că conținutul fiecărui element al matricei ia este afișat pe ecran:

pentru (int i = o; i< ia.length; i++)

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

O matrice de lungime zero (adică una care nu are elemente) este de obicei numită gol. Rețineți că o referință de matrice nulă și o referință de matrice goală sunt două lucruri complet diferite. O matrice goală este o matrice reală care pur și simplu nu are elemente. O matrice goală oferă o alternativă convenabilă la null atunci când se întoarce de la o metodă. Dacă o metodă este capabilă să returneze null, codul aplicației care apelează metoda trebuie să compare valoarea returnată cu null înainte de a continua cu operațiunile rămase. Dacă metoda returnează o matrice (eventual goală), nu sunt necesare verificări suplimentare - desigur, altele decât cele referitoare la lungimea matricei, care ar trebui efectuate în orice caz.

Este permisă și o altă formă de declarație de matrice, în care parantezele drepte sunt specificate după identificatorul de matrice, și nu după numele tipului său:

int ia = new int;

Prima sintaxă, totuși, este considerată de preferat deoarece face declarația de tip mai compactă.

Modificatori în declarațiile de matrice

Reguli pentru utilizarea anumitor tablouri în declarații modificatori sunt comune și depind doar de categoria căreia îi aparține tabloul - câmpuri sau variabile locale. Există un lucru care este important de reținut - modificatorii se aplică matricei în sine, dar nu și elementelor sale individuale. Dacă atributul final este specificat într-o declarație de matrice, aceasta înseamnă doar că referința la matrice nu poate fi schimbată după crearea acesteia, dar nu interzice în niciun fel posibilitatea de a schimba conținutul elemente individuale matrice. Limbajul nu vă permite să specificați niciun modificator (să zicem, final sau final) pentru elementele matricei.

Matrice multidimensionale

Java acceptă capacitatea de a declara tablouri multidimensionale(matrice multidimensionale) (adică matrice ale căror elemente sunt alte matrice), codul care implică declararea unei matrice bidimensionale și afișarea conținutului elementelor sale ar putea arăta, de exemplu, astfel:

float mat = float nou;

setupMatrix(mat);

pentru (int y = o; y< mat.length; у++) {

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

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

system.out.println();

Când creați o matrice, trebuie specificată cel puțin prima sa dimensiune, „cea mai din stânga”. Este posibil să nu fie specificate alte dimensiuni - în acest caz vor trebui determinate ulterior. Specificarea tuturor dimensiunilor simultan în noul operator este cea mai concisă modalitate de a crea o matrice, permițându-vă să evitați nevoia de a utiliza operatori suplimentari nou. Expresia pentru declararea și crearea matricei mat de mai sus este echivalentă cu următorul fragment de cod:

float mat = float nou;

pentru (int y = o; y< mat.length; у++)

mat[y] = flotor nou;

Această formă de declarație are avantajul că, împreună cu obținerea de tablouri cu aceleași dimensiuni (să zicem, 4 x 4), vă permite să construiți șiruri de tablouri de dimensiuni diferite necesare pentru stocarea anumitor secvențe de date.

Inițializarea matricelor

Când este creată o matrice, fiecare element primește o valoare implicită în funcție de tipul matricei: zero (0) pentru tipurile numerice, „\u0000′_ pentru char, false pentru boolean și null pentru tipurile de referință. Prin declararea unui tablou de tip referință, definim de fapt o matrice temporar acest tip. Luați în considerare următorul fragment de cod:

Attr attrs = Attr nou;

pentru (int i = o; i< attrs.length; i++)

attrs[i] = nou Attr(nume[i], valori[i]);

După executarea primei expresii care conține noul operator, variabila attrs va avea o referință la o matrice de 12 variabile care sunt inițializate la null. Obiectele Attr în sine vor fi create doar pe măsură ce bucla progresează.

O matrice poate fi inițializată (în același timp cu declarația sa) prin intermediul unui construct între acolade care listează valorile inițiale ale elementelor sale:

Pericole șir = ("Lei", "Tigri", "Ursi");

Următorul fragment de cod va da același rezultat:

String dangers = String nou; pericole = „Lei”;

pericole = „Tigri”;

pericole = „Ursi”;

Prima formă, care specifică o listă de inițializatori între acolade, nu necesită utilizarea explicită a noului operator - este apelată indirect de sistemul de rulare. Lungimea matricei în acest caz este determinată de numărul de valori de inițializare. De asemenea, este posibil să specificați în mod explicit noul operator, dar dimensiunea ar trebui totuși omisă; ca și înainte, este determinată de sistemul de execuție:

Pericole șir = new String(„Lei”, „Tigri”, „Ursi”);

Această formă de declarare și inițializare a unui tablou poate fi utilizată oriunde în cod, de exemplu într-o expresie de apel de metodă:

printStringsCnew String („unu”, „două”, „trei” ));

O matrice fără titlu care este creată în acest fel este numită anonim(anonim).

Matricele de matrice pot fi inițializate prin secvențe imbricate de valori inițiale. Mai jos este un exemplu de declarare a unui tablou care conține primele câteva rânduri ale așa-numitului triunghiul lui Pascal unde fiecare rând este descris de propria sa matrice de valori.

int pascalsTriunghi = (

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

Indicii tablourilor multidimensionale sunt în ordine de la exterior la interior. Deci, de exemplu, pascalsTriangle = " + arr); )

O versiune simplificată a buclei pentru ieșirea unei matrice este următoarea:

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

Cum se șterge o matrice în Java?

Puteți șterge o matrice în Java astfel:

Cum să obțineți lungimea unui tablou în Java?

Obținem lungimea unui tablou în Java astfel:

int arrLength = arr.lungime;

Cum să obțineți primul element al unei matrice în Java?

int firstElem = arr;

Cum să obțineți pendul element al unui tablou în Java?

int lastElem = arr;

Cum se definește o matrice de lungime variabilă în Java?

Cum se definește o matrice în Java lungime variabilă? În nici un caz. Când definiți o matrice, îi setați apoi lungimea; aceasta nu poate fi schimbată ulterior. În astfel de cazuri, se folosesc colecții, de exemplu: Vector, ArrayList etc.

Deci, lungimea matricei nu poate fi variabilă. Dar puteți folosi o variabilă atunci când definiți o matrice. Daca da:

int cd;
int ab = int nou;//Eroare.

atunci obținem o eroare: lungimea tabloului nu poate fi o variabilă.

Trebuie să setați valoarea cd:

int cd = 10;
int ab = int nou;

Acum e în regulă. Dacă modificați variabila cd după definirea matricei, aceasta nu va afecta matricea, adică. lungimea sa nu se va schimba. Exemplu:

Int cd = 10; int ab = int nou; cd = 12;// Acest lucru este posibil arrLength = ab.length; System.out.println("ab lungimea matricei = " + arrLength); //Ieșiri: ab lungimea matricei = 10 ab=4;// Și aici este eroarea

Primim o eroare:

Excepție în firul „principal” java.lang.ArrayIndexOutOfBoundsException: 11

Indicele maxim al matricei noastre este 9. Modificarea valorii variabilei cd nu afectează matricea, deoarece este deja definită și lungimea sa este constantă.

Variabilele pot fi folosite pentru a accesa elementele matricei:

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

Matrice de caractere în Java

Un exemplu de matrice de caractere în Java și rezultatul său:

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

Cum se umple o matrice în Java?

Puteți umple o matrice folosind metoda de umplere statică.

Matrice Matrice Acesta este un obiect care stochează un număr fix de valori de același tip. Cu alte cuvinte, o matrice este o colecție numerotată de variabile. Variabila din tablou este apelată element de matrice, iar poziția sa în matrice este dată index. De exemplu, trebuie să stocăm 50 de nume diferite; trebuie să fiți de acord, este incomod să creați o variabilă separată pentru fiecare nume, așa că vom folosi o matrice. Numerotarea elementelor matricei începe de la 0, iar lungimea matricei este setată în momentul creării sale și este fixă.

Pentru claritate, poza din care am făcut-o Tutorialul Java.

Pentru a crea o matrice, trebuie să o declarați, să îi rezervați memorie și să o inițializați.

Declararea unui Array în Java

Când creați o matrice în Java, primul lucru pe care trebuie să-l faceți este să o declarați. Acest lucru se poate face după cum urmează:

Int myFirstArray;

De asemenea, puteți declara o matrice ca aceasta:

Int mySecondArray;

Cu toate acestea, aceasta nu este o convenție binevenită în codul Java, deoarece parantezele indică faptul că avem de-a face cu o matrice și au mai mult sens atunci când sunt lângă notația de tip.

Bazat acest exemplu, am declarat 2 tablouri cu nume myFirstArrayȘi mySecondArray. Ambele matrice vor conține elemente de tip int.

Puteți declara o matrice de orice tip în acest fel:

Byte anArrayOfBytes; scurt anArrayOfShorts; lung anArrayOfLongs; float anArrayOfFloats; dublu anArrayOfDoubles; boolean anArrayOfBooleans; char anArrayOfChars; String anArrayOfStrings; ...

Tipul unui tablou este specificat după cum urmează: tip, unde tip este tipul de date al elementelor pe care le conține. Parantezele sunt denumire specială că variabilele sunt cuprinse într-o matrice. Numele matricei poate fi orice, cu toate acestea, trebuie să se potrivească cu .

Matricele pot fi create nu numai din variabile tipuri de bază, dar și din obiecte arbitrare.

Când declarați o matrice în limbajul Java dimensiunea sa nu este specificată și memoria nu îi este rezervată. Tot ceea ce se întâmplă este crearea unei legături către matrice.

Rezervarea memoriei pentru matrice și inițializarea acesteia.

Int myFirstArray; myFirstArray = int nou;

În exemplul nostru, am creat o matrice de 15 elemente de tip intși l-a atribuit unei variabile declarate anterior myFirstArray.

Puteți, de asemenea, să declarați numele unui tablou și să îi rezervați memorie pe o singură linie.

Int myArray = new int;

Când creați o matrice folosind cuvânt cheie nou, toate elementele matricei sunt inițializate automat valori zero. Pentru a atribui elementelor matricei valorile lor inițiale, este necesar să se efectueze initializare. Inițializarea poate fi efectuată element cu element

MyFirstArray = 10; // inițializarea primului element myFirstArray = 20; // inițializarea celui de-al doilea element myFirstArray = 30; // etc.

și într-o buclă, folosind un index, iterând prin toate elementele matricei și atribuindu-le valori.

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

După cum se poate observa din exemplele anterioare, pentru a accesa un element de matrice, trebuie să specificați numele acestuia și apoi, între paranteze drepte, indexul elementului. Un element de matrice cu un index specific se comportă la fel ca o variabilă.

Să ne uităm la crearea și inițializarea unui tablou folosind următorul exemplu. În ea creăm o matrice care conține numerele 0-9 și imprimăm valorile pe consolă.

//crearea și inițializarea unui tablou int numberArray = new int; for(int i = 0; i< 10; i++){ numberArray[i] = i; } //вывод значений на консоль for(int i = 0; i < 10; i++){ System.out.println((i+1) + "-й элемент массива = " + numberArray[i]); }

Formular de înregistrare simplificat

De asemenea, puteți utiliza notația simplificată pentru a crea și inițializa o matrice. Nu conține cuvântul nou, iar valorile inițiale ale matricei sunt enumerate în paranteze.

Int myColor = (255, 255, 0);

Aici, lungimea matricei este determinată de numărul de valori situate între paranteze și separate prin virgule. Această notație este mai potrivită pentru a crea matrice mici

Determinarea dimensiunii matricei

Mărimea unui tablou nu este întotdeauna evidentă, așa că pentru a o afla ar trebui să utilizați proprietatea length, care returnează lungimea matricei.

MyColor.length;

Acest cod ne va ajuta să aflăm că lungimea matricei myColor este de 3.

Exemplu: Având în vedere 4 numere, trebuie să găsiți minimul

numere int = (-9, 6, 0, -59); int min = numere; for(int i = 0; i< numbers.length; i++){ if(min>numere[i]) min = numere[i]; ) System.out.println(min);

Exerciții privind tablourile unidimensionale în Java:

  1. Creați o matrice care să conțină primele 10 numere impare. Imprimați elementele matricei pe consolă pe o singură linie, separate prin virgulă.
  2. Având în vedere o matrice de dimensiune N, găsiți cel mai mic element al matricei și imprimați-l pe consolă (dacă există mai multe elemente cele mai mici, imprimați-le pe toate).
  3. Găsiți cel mai mare element din matrice din sarcina 2.
  4. Schimbați cele mai mari și cele mai mici elemente ale unei matrice. Exemplu: dat o matrice (4, -5, 0, 6, 8). După înlocuire, va arăta ca (4, 8, 0, 6, -5).
  5. Aflați media aritmetică a tuturor elementelor matricei.

Ultima actualizare: 11/09/2018

O matrice reprezintă un set de valori de același tip. Declararea unei matrice este similară cu declararea unei variabile obișnuite care stochează o singură valoare și există două moduri de a declara o matrice:

tip_date nume_matrice; // fie tipul de date nume_matrice;

De exemplu, să definim o matrice de numere:

Int numere; int nums2;

După declararea matricei, îl putem inițializa:

Int numere; nums = new int; // matrice de 4 numere

Un tablou este creat folosind următoarea construcție: new data_type[număr de elemente] , unde new este un cuvânt cheie care alocă memorie pentru numărul de elemente specificat în paranteze. De exemplu, nums = new int; - această expresie creează o matrice de patru elemente int, iar fiecare element va avea o valoare implicită de 0.

De asemenea, puteți inițializa imediat o matrice atunci când o declarați:

Int nums = int nou; // matrice de 4 numere int nums2 = new int; // matrice de 5 numere

Cu o astfel de inițializare, toate elementele matricei au o valoare implicită. Pentru tipurile numerice (inclusiv tipul char) acesta este numărul 0, pentru tipul boolean acesta este fals, iar pentru alte obiecte acesta este valoare nulă. De exemplu, pentru tipul int valoarea implicită este 0, deci tabloul nums definit mai sus va consta din patru zerouri.

Cu toate acestea, puteți seta și valori specifice pentru elementele unei matrice atunci când o creați:

// aceste două metode sunt echivalente int nums = new int ( 1, 2, 3, 5 ); int nums2 = ( 1, 2, 3, 5 );

Este de remarcat faptul că, în acest caz, parantezele pătrate nu indică dimensiunea matricei, deoarece este calculată prin numărul de elemente din acolade.

După crearea unei matrice, putem accesa oricare dintre elementele sale prin index, care este trecut între paranteze drepte după numele variabilei matricei:

Int nums = int nou; // setați valorile elementelor matricei nums = 1; numere = 2; numere = 4; numere = 100; // obținem valoarea celui de-al treilea element al matricei System.out.println(nums); // 4

Indexarea elementelor matricei începe de la 0, așa că în acest caz, pentru a accesa al patrulea element din matrice, trebuie să folosim expresia nums.

Și deoarece tabloul nostru este definit pentru doar 4 elemente, nu putem accesa, de exemplu, al șaselea element: nums = 5; . Dacă încercăm să facem acest lucru, vom primi o eroare.

Lungimea matricei

Cea mai importantă proprietate pe care o au tablourile este proprietatea length, care returnează lungimea matricei, adică numărul elementelor sale:

Int numere = (1, 2, 3, 4, 5); int lungime = nums.length; // 5

Adesea, ultimul indice este necunoscut și pentru a obține ultimul element matrice, putem folosi această proprietate:

Int ultimul = nums;

Matrice multidimensionale

Anterior, ne-am uitat la matrice unidimensionale, care pot fi reprezentate ca un lanț sau șir de valori de același tip. Dar, pe lângă tablourile unidimensionale, există și cele multidimensionale. Cel mai celebru matrice multidimensională- un tabel care reprezintă o matrice bidimensională:

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

Vizual, ambele matrice pot fi reprezentate după cum urmează:

Matrice unidimensională nums1
Matrice bidimensională nums2

Deoarece tabloul nums2 este bidimensional, acesta reprezintă o masă simplă. De asemenea, ar putea fi creat astfel: int nums2 = new int; . Numărul de paranteze pătrate indică dimensiunea matricei. Și numerele dintre paranteze indică numărul de rânduri și coloane. Și, de asemenea, folosind indecși, putem folosi elemente de matrice într-un program:

// setează elementul primei coloane din al doilea rând nums2=44; System.out.println(nums2);

O declarație de matrice tridimensională ar putea arăta astfel:

Int nums3 = new int;

Matrice zimțată

Matricele multidimensionale pot fi reprezentate și ca „matrice zimțate”. În exemplul de mai sus, matricea bidimensională avea 3 rânduri și trei coloane, așa că am avut un tabel plat. Dar putem atribui fiecărui element dintr-o matrice bidimensională o matrice separată sume variabile elemente:

Int nums = int nou; nums = new int; nums = new int; nums = new int;

pentru fiecare

Varianta speciala pentru buclă este destinat iterării peste elemente din seturi de elemente, cum ar fi matrice și colecții. Este asemănător cu acțiunea bucla foreach, care este disponibil în alte limbaje de programare. Anunțul său oficial:

Pentru (tip de date nume_variabilă: container)( // acțiuni)

De exemplu:

Int array = new int ( 1, 2, 3, 4, 5 ); pentru (int i: array)( System.out.println(i); )

În acest caz, containerul este o matrice de date de tip int . Apoi este declarată o variabilă de tip int

Același lucru se poate face folosind versiune obisnuita pentru:

Int array = new int ( 1, 2, 3, 4, 5 ); pentru (int i = 0; i< array.length; i++){ System.out.println(array[i]); }

În același timp, această versiune a buclei for este mai flexibilă decât for (int i: array) . În special, în această versiune putem schimba elementele:

Int array = new int ( 1, 2, 3, 4, 5 ); pentru (int i=0; i

Buclă prin rețele multidimensionale

int nums = new int ( (1, 2, 3), (4, 5, 6), (7, 8, 9) ); pentru (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(); }

Mai întâi, este creată o buclă pentru a repeta peste rânduri, iar apoi, în cadrul primei bucle, este creată o buclă interioară pentru a itera peste coloanele unui anumit rând. Într-un mod similar, puteți itera peste matrice și seturi tridimensionale cu un număr mare de dimensiuni.

Cele mai bune articole pe această temă