Java arrays metoder. Matriser og todimensjonale matriser i Java. Hvordan sette variabel lengde array i Java

Multidimensjonale matriser i Java Baeldung

Tenk for eksempel på en todimensjonal matrise i Java.

Java 2D Arrays er en rektangulær eller ikke-rektangulær talltabell.

En Java 2D Array består av rader og kolonner.

Første indeks av todimensjonal java-array er antall rader.

Eksempel på Java 2D rektangulær matrise:

Int multyArr; multyArr = ny int; / * * multyArr struktur * | (0,0) | (0,1) | * | (1.0) | (1,1) | * /

Her erklærer og definerer vi en todimensjonal matrise som har to rader og to kolonner.

La oss laste matrisen med elementer:

MultiArr = 1; multyArr = 2; multyArr = 3; multyArr = 4;

Sende ut en todimensjonal matrise (iterere over matrisen):

System.out.println ("multyArr"); for (int inn = 0; inn< 2; inn++) { for(int jnn = 0; jnn < 2; jnn++) { System.out.println("multyArr[" + inn + "][" + jnn + "] = " + multyArr ); } }

Vi får:

for (int inn = 0; inn< 2; inn++)

vi går gjennom radene, og i løkken

for (int jnn = 0; jnn< 2; jnn++)

etter kolonner.

Du kan deklarere og definere en flerdimensjonal matrise på samme tid:

int multyArr = ((1,2), (3,4));

Lengde på flerdimensjonal matrise i Java

Int multyArr = ((1,2), (3,4), (5,6)); / * * multyArr struktur * | 1 | 2 | * | 3 | 4 | * | 5 | 6 | * / System.out.println ("Arraylengde =" + multyArr.length);

Matriselengde = 3

Det er tre rader med to elementer hver. Den første dimensjonen er tre, dette er lengden på den todimensjonale matrisen.

Tredimensjonal matrise i Java

Et eksempel på en 3D-matrise i Java:

int triArray;
triArray = ny int;

Det er her en 3-D-matrise erklæres og defineres. Det kan representeres som en kube bestående av to lag (lag), hvert lag består av to rader og to kolonner, dvs. hvert lag er en todimensjonal matrise.

Hvordan fyller jeg en 3D-matrise? Det er mulig i en loop, men vi vil manuelt fylle ut eksempelet:

// **************** // DET FØRSTE LAGET // **************** // den første raden i det første laget triArray = 1; triArray = 2; // den andre raden i det første laget triArray = 3; triArray = 4; // **************** // DET ANDRE LAGET // **************** // den første raden i det andre laget triArray = 5; triArray = 6; // den andre raden i det andre laget triArray = 7; triArray = 8;

Hvordan sender jeg ut en 3D-matrise? Eller hvordan iterere over en 3D-matrise? Så.

Array (Engelsk Array) det er et objekt som lagrer et fast antall verdier av samme type. Med andre ord er en matrise en nummerert samling av variabler. Variabelen i matrisen kalles array-element, og dens posisjon i matrisen er gitt av indeks... For eksempel må vi lagre 50 forskjellige navn, du må innrømme at det er upraktisk å lage en egen variabel for hvert navn, så vi bruker en matrise. Nummereringen av matriseelementer starter fra 0, og lengden på matrisen settes på tidspunktet for opprettelsen og er fast.

For klarhetens skyld, bildet jeg tok med Java Opplæringen.

For å lage en matrise må du deklarere den, reservere minne for den og initialisere den.

Array-erklæring i Java

Når du oppretter en matrise i Java, er det første trinnet å deklarere den. Dette kan gjøres som følger:

Int myFirstArray;

Du kan også deklarere en matrise som dette:

Int mySecondArray;

Dette er imidlertid ikke velkommen av Java-konvensjonene, siden parentesen indikerer at vi har å gjøre med en matrise og det er mer logisk når de står ved siden av typebetegnelsen.

Basert dette eksemplet, har vi deklarert 2 arrays med navn myFirstArray og mySecondArray... Begge matrisene vil inneholde elementer av typen int.

På samme måte kan du deklarere en matrise av hvilken som helst type:

Byte anArrayOfBytes; kort anArrayOfShorts; long anArrayOfLongs; float anArrayOfFloats; dobbel anArrayOfDoubles; boolsk anArrayOfBooleans; char anArrayOfChars; String anArrayOfStrings; ...

Typen til en matrise er spesifisert som type, der type er datatypen til elementene den inneholder. Parentesene er en spesiell betegnelse på at variabler er inneholdt i en matrise. Matrisenavnet kan være hva som helst, men det må samsvare.

Matriser kan opprettes ikke bare fra variabler av grunnleggende typer, men også fra vilkårlige objekter.

Når du erklærer en matrise i Java språk størrelsen er ikke spesifisert og det er ikke reservert minne for den. Det oppretter bare en referanse til matrisen.

Minnereservasjon for en matrise og dens initialisering.

Int myFirstArray; myFirstArray = ny int;

I vårt eksempel har vi laget en matrise med 15 elementer av typen int og tilordnet den til den tidligere deklarerte variabelen myFirstArray.

Du kan også deklarere et matrisenavn og reservere minne for det på samme linje.

Int myArray = ny int;

Når du oppretter en matrise med søkeord ny, initialiseres alle elementene i matrisen automatisk null verdier... For å tilordne startverdiene deres til elementene i matrisen, er det nødvendig å holde det initialisering... Initialisering kan utføres som element for element

MyFirstArray = 10; // initialiser det første elementet myFirstArray = 20; // initialiser det andre elementet myFirstArray = 30; // etc.

og i en løkke, ved å bruke indeksen, gå gjennom alle elementene i matrisen og tilordne verdier til dem.

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

Som du kan se fra de foregående eksemplene, for å referere til et matriseelement, må du spesifisere navnet og deretter i firkantede parenteser - elementets indeks. Et matriseelement med en spesifikk indeks oppfører seg på samme måte som en variabel.

La oss vurdere opprettelsen og initialiseringen av en matrise i følgende eksempel. I den lager vi en matrise som inneholder tallene 0-9 og skriver ut verdiene til konsollen.

// opprette og initialisere en matrise 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]); }

Forenklet registreringsskjema

Du kan også bruke forenklet notasjon for å opprette og initialisere en matrise. Den inneholder ikke et ord ny, og startverdiene til matrisen er oppført i parentes.

Int myColor = (255, 255, 0);

Her bestemmes lengden på matrisen av antall verdier mellom parenteser og atskilt med komma. Dette er mer egnet for å lage små matriser.

Bestemme størrelsen på en matrise

Størrelsen på matrisen er ikke alltid åpenbar, så for å finne den bør du bruke egenskapen length, som returnerer lengden på matrisen.

MyColor.length;

Denne koden vil hjelpe oss å finne ut at lengden på myColor-arrayet er 3.

Eksempel: Gitt 4 tall, må du finne minimum

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

Øvelser på endimensjonale arrays i Java:

  1. Lag en matrise som inneholder de første 10 oddetallene. Skriv ut array-elementene til konsollen på én linje, atskilt med komma.
  2. Gitt en matrise med dimensjon N, finn det minste elementet i matrisen og skriv det ut på konsollen (hvis det er flere minste elementer, skriv ut alle).
  3. Finn det største elementet i matrisen fra oppgave 2.
  4. Bytt ut de største og minste elementene i arrayet. Eksempel: gitt en matrise (4, -5, 0, 6, 8). Etter utskifting vil det se ut som (4, 8, 0, 6, -5).
  5. Finn det aritmetiske gjennomsnittet av alle elementene i matrisen.

Hva er en Array?

En matrise i Java er en samling av elementer av samme type som kan refereres til med indeks.

Elementene til arrays i Java er plassert etter hverandre i datamaskinens minne. Nedenfor er et eksempel på en array i Java.

Array-erklæring i Java

La oss erklære en matrise for lagring av elementer av type int:

Variabelen arr er deklarert her, som er en matrise. For å bruke denne variabelen må du definere den.

Definere en matrise i Java

For å definere en matrise i Java må du spesifisere lengden, dvs. antall elementer som kan lagres i den:

Arrayet vårt inneholder 5 elementer.

En matrise er en samling av elementer. Hvert element i matrisen kan refereres til med nummeret. Tallet kalles vanligvis en indeks. Nummereringen av array-elementer i Java starter fra null.

Hvordan laster jeg inn elementer i en matrise?

La oss tilordne en verdi til det første elementet i matrisen, og det første elementet har indeks null:

La oss tilordne en verdi til det andre elementet i matrisen, og det andre elementet har indeks én:

for (int inn = 0; inn< 5; inn++)
{
arr = inn;
}

Når du erklærer en matrise, kan du umiddelbart laste inn verdier i den:

int arr = (0, 1, 2, 3, 4);

antall elementer her er 5, dvs. det er ikke nødvendig å spesifisere antall elementer, det vil bli bestemt automatisk.

Hvordan får jeg elementer fra en matrise?

Hvert element i matrisen kan refereres til med nummeret. For å få et element av en matrise, må du spesifisere navnet på matrisen og indeksen til elementet:

dette er det første elementet i matrisen, fordi det første elementet har en indeks på null.

La oss tilordne verdien av det tredje elementet i matrisen til int a-variabelen:

La oss vise alle elementene i matrisen i en løkke (iterate over matrisen):

For (int inn = 0; inn< 5; inn++) { System.out.println("arr[" + inn + "] = " + arr); }

En forenklet versjon av løkken for utmating av en matrise er som følger:

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

Hvordan kan jeg slette en matrise i Java?

Du kan slette en matrise i Java slik:

Hvordan får jeg lengden på en matrise i Java?

Vi får lengden på en matrise i Java slik:

int arrLength = arr.length;

Hvordan får jeg det første elementet i en array i Java?

int firstElem = arr;

Hvordan får jeg det halvsiste elementet i en matrise i Java?

int lastElem = arr;

Hvordan definerer jeg en matrise med variabel lengde i Java?

Hvordan definerer jeg en matrise med variabel lengde i Java? Aldri. Når du definerer en matrise, angir du lengden, du kan ikke endre den i fremtiden. I slike tilfeller brukes samlinger, for eksempel: Vector, ArrayList, etc.

Så den variable lengden på matrisen kan ikke være det. Men du kan bruke en variabel når du definerer en matrise. I så fall:

int cd;
int ab = ny int; // Feil.

da får vi en feil, lengden på matrisen kan ikke være variabel.

Du må angi cd-verdien:

int cd = 10;
int ab = ny int;

Nå ok. Å endre cd-variabelen etter å ha definert matrisen vil ikke påvirke matrisen, dvs. lengden vil ikke endres. Eksempel:

Int cd = 10; int ab = ny int; cd = 12; // Dette kan gjøres arrLength = ab.length; System.out.println ("ab arraylengde =" + arrLength); // Utganger: ab arraylengde = 10 ab = 4; // Og her er en feil

Vi får feilen:

Unntak i tråden "hoved" java.lang.ArrayIndexOutOfBoundsException: 11

Den maksimale indeksen for matrisen vår er 9. Å endre verdien til variabelen cd påvirker ikke matrisen, fordi den allerede er definert og lengden er konstant.

Variabler kan brukes til å referere til matriseelementer:

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

Java-utvalg av tegn

Et eksempel på en tegnarray i Java og dens utdata:

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

Hvordan fyller jeg en matrise i Java?

Du kan fylle matrisen ved å bruke den statiske fyllmetoden.

En matrise er kraftig verktøy slik at du kan jobbe med stor kvantitet data. Selvfølgelig, hvis du trenger å lagre for eksempel 100 verdier et sted i prosessen med koden din, er det i det minste urimelig å lage samme antall variabler for dette. Matrisen lar deg lagre et stort nummer av verdier under samme navn og referer til dem på den aktuelle indeksen. Forestillingen om arrays er hjørnestein i Java for nybegynnerkurs. Tross alt er de grunnlaget for mange datastrukturer.

Siden Java primært er OOP, sammenlignet med arrays i andre programmeringsspråk, har den en særpreg- de er representert som objekter. Blant andre fordeler eliminerer dette behovet for å holde styr på minneopprydding, siden det frigjøres automatisk.

Oppretting og manipulering av endimensjonale arrays

En endimensjonal matrise er en klassisk og er en samling av elementer knyttet til et felles navn, som hver har en spesifikk indeks. Måten å deklarere en matrise på er vist i figuren nedenfor.

Først kunngjøres det Java-type array, som definerer typen verdier som er lagret i den. Det kan være en hvilken som helst gyldig. Deretter kommer navnet på matrisen og hakeparenteser for å fortelle kompilatoren at variabelen er en matrise. Vær oppmerksom på et viktig faktum. kan plasseres både etter matrisens basistype og etter navnet på matrisen. Etter likhetstegnet indikeres den nye operatøren, som starter tildelingen av minne for matrisen (som i tilfellet med objekter), typen elementer som vil bli lagret i den (må være kompatibel med basistypen som ble erklært tidligere) , og til slutt deres nummer angitt i hakeparenteser.

Elementnummereringen i Java-matrisen starter på 0. Dermed vil indeksen til det første elementet i denne matrisen vil være lik 0, og den sjette - 5. For å referere til et spesifikt element i matrisen, for eksempel den femte, er det nok å angi navnet på matrisen og indeksen til elementet i hakeparenteser ved siden av Navn. Dermed kan du både tilordne en verdi til et element og hente den. Du bør imidlertid være forsiktig, for hvis du passerer indeksen der elementet ikke eksisterer, vil det oppstå en feil.

Multidimensjonale matriser i Java Baeldung

Flerdimensjonale arrays er en serie endimensjonale som refereres til av elementene i andre arrays. Med andre ord, de enkleste blant dem er todimensjonale. Ved å bruke deres eksempel vil vi prøve å forstå konseptet. For klarhets skyld viser figuren nedenfor syntaksen og diagrammet som beskriver strukturen til en todimensjonal matrise.

Som du kan se, er syntaksen ikke veldig forskjellig fra endimensjonale arrays. La oss ta en titt på strukturen. I de første parentesene har vi avsatt plass til 5 elementer. Disse elementene er ikke annet enn referanser til individuelle matriser. Dessuten bestemmes størrelsen på hver av dem av tallet i de andre parentesene. Faktisk er matriser analoge med todimensjonale matriser i matematikk. Vær oppmerksom på at i tillegg til elementer, tildeles minne eget sted hvor verdien av lengden på matrisen er lagret. Arbeider vanligvis med flerdimensjonale arrays gjøres gjennom nestet for løkker.

Uregelmessige matriser

En todimensjonal matrise er en matrise av matriser. Dette har vi allerede funnet ut. Men kan arrayene den inneholder ha ulik lengde? Svaret er ja, det kan de. For å gjøre dette gir Java muligheten til å deklarere en todimensjonal matrise på en spesiell måte. For eksempel ønsker vi å lage en todimensjonal matrise som vil inneholde tre endimensjonale matriser med lengdene 2, 3 og 4, henholdsvis. Det er erklært som følger:

intarr = newint;

Vær oppmerksom på at vi ikke tok med nummeret i den andre parentesen. Å bestemme størrelsen på matriser i arr gjøres slik:

Med henvisning til elementet ved indeks 0, som peker til den første matrisen, erklærer vi det med dimensjon 2. En matrise med dimensjon 3 vil bli lagret under elementet med indeks 1, og så videre. Det er ganske enkelt.

Alternativ syntaks for java array-deklarasjon

Matriser kan initialiseres direkte når de opprettes. Det er ganske greit.

Legg merke til erklæringen om jerseyNumber og playerName arrays.

Når det gjelder todimensjonale arrays denne kunngjøringen ser slik ut:

For å gjøre dette, i stedet for den nye operatoren, åpnes krøllete klammeparenteser, der alle elementene er oppregnet atskilt med kommaer. Java vil i dette tilfellet automatisk tildele minne for dem og indeksere dem deretter.

Arrays-hjelperklasse

For å jobbe med enheter som arrays i Java, har java.util-pakken en spesiell Arrays-klasse som gir mange statiske metoder, noe som i stor grad letter operasjoner med dem. Listen over grunnleggende metoder er vist i figuren nedenfor.

La oss analysere noen av de mest nyttig java array metoder:

CopyOf (matrise, lengde) - returnerer en kopi av den beståtte matrisen med tilsvarende lengde. Hvis den passerte lengden er større enn den opprinnelige matrisen, fylles alle "ekstra" elementer med standardverdien (0, hvis en enkel type, og null, hvis en referansetype).

CopyOfRange (array, første indeks, siste indeks) - ikke spesifisert i bildet, men nyttig metode... Den kopierer delen av den beståtte matrisen spesifisert av de tilsvarende indeksene, starter med den første og slutter med den siste.

Sorter (matrise) – Sorterer elementene i en matrise i stigende rekkefølge.

Fyll (matrise, verdi) - fyller den beståtte matrisen tilsvarende verdi.

BinarySearch (matrise, verdi) – Returnerer indeksen der elementet med den tilsvarende verdien er i den beståtte sorterte matrisen. Hvis det ikke er noe slikt element, returneres et negativt tall.

Siden metodene er statiske, trenger du ikke opprette en forekomst av Arrays-klassen for å kalle dem. De kalles direkte fra den: Arrays.sort (arr).

Konklusjon

Vi har vurdert det meste viktige aspekter angående arrays, og for de som akkurat er i gang lære Java for nybegynnere er dette nok for en grunnleggende forståelse av en enhet som en matrise, og de grunnleggende teknikkene for å jobbe med den. Selvsagt vil praksis gi deg mer forståelse for jobben. dette instrumentet... Så ikke vær lat til å gjøre noen få øvelser, manipulere matriser på forskjellige måter.

Array Java-hjelperklassen brukes allerede i "kamp"-forhold, så det anbefales å begynne med å lære å utføre alle grunnleggende operasjoner med arrays manuelt.

En matrise er en datastruktur som lagrer verdier av samme type. Et enkelt element i en matrise er tilgjengelig ved hjelp av en heltallsindeks. For eksempel, hvis a er en matrise med heltall, så er verdien av uttrykk a [i] lik det i-te heltall i matrisen. En matrise erklæres som følger: først angis typen av matrisen, det vil si typen elementer som finnes i matrisen, etterfulgt av et par tomme. firkantede parenteser og deretter navnet på variabelen. For eksempel, her er hvordan en matrise med heltall erklæres: int a; Imidlertid erklærer denne operatoren bare variabelen a, uten å initialisere den med en reell matrise. For å lage en matrise må du bruke den nye operatoren. int a = ny int [100]; Denne operatoren lager en matrise med 100 heltall. Elementene i denne matrisen er nummerert fra 0 til 99 (ikke fra 1 til 100). Etter opprettelsen kan matrisen fylles, for eksempel ved hjelp av en løkke. int a = ny int [100]; for (int i = 0; i< 100 ; i++ ) a[ i] = i; // Fyller matrisen med tall fra 0 til 99 Hvis du prøver å få tilgang til element a (eller et hvilket som helst annet element hvis indeks er utenfor området fra 0 til 99) ved å lage en matrise med 100 elementer, vil programmet avsluttes fordi det oppstår et unntak knyttet til at matriseindeksen er utenfor rekkevidde. område. For å telle antall elementer i en matrise, bruk metoden Matrisenavn.lengde. For eksempel, for (int i = 0; i< a. length; i++ , System. out. println (a[ i] ) ) ; После создания массива изменить его размер невозможно (хотя можно, конечно, изменять отдельные его элементы). Если в ходе выполнения программы необходимо часто изменять размер массива, лучше использовать другую структуру данных, называемую списком массивов (array list). Массив можно объявить двумя способами: int a; или int a ; Большинство программистов на языке Java предпочитают первый стиль, поскольку в нем четче отделяется тип массива int (целочисленный массив) от имени переменной.

Matriseinitialiserere og ikke navngitte matriser

Java-språket har en funksjon for å lage en matrise og initialisere den samtidig. Her er et eksempel på en slik syntaks: int smallPrimes = (2, 3, 5, 7, 11, 13); Merk at du ikke trenger å bruke den nye operatøren i dette tilfellet. I tillegg er det til og med mulig å initialisere en ikke navngitt matrise: new int (16, 19, 23, 29, 31, 37) Dette uttrykket allokerer minne for en ny matrise og fyller den med tallene spesifisert i krøllete regulering... I dette tilfellet telles antallet deres, og følgelig bestemmes størrelsen på matrisen. Denne syntaksen er nyttig for å reinitialisere en matrise uten å opprette en ny variabel. For eksempel uttrykket smallPrimes = new int (17, 19, 23, 29, 31, 37); er en forkortet notasjon av uttrykket int anonym = (17, 19, 23, 29, 31, 37); smallPrimes = anonym; Du kan lage en matrise med størrelse null. En slik matrise kan være nyttig når man skal skrive en metode som beregner en matrise som viser seg å være tom. En null-lengde matrise erklæres som følger: ny Elementtype Merk at en slik matrise ikke er ekvivalent med et null-objekt.

Kopier arrays

En matrise kan kopieres til en annen, men begge variablene vil referere til samme matrise. int luckyNumbers = smallPrimes; luckyNumbers [5] = 12; // Nå er elementet smallPrimes også 12 Resultatet er vist i fig. 3.1. Hvis du trenger å kopiere alle elementene i en array til en annen, bruk arraycopy-metoden fra systemet. Anropet ser slik ut: System. arraycopy (fra, fralndex, til, tolndex, telle); Til-matrisen må være stor nok til å inneholde alle de kopierte elementene. Figur 3.1. Kopierer en matrise For eksempel, operatørene vist nedenfor, hvis resultater er vist i fig. 3.2, lag to matriser og kopier deretter de fire siste elementene i den første matrisen til den andre. Kopiering starter ved den andre posisjonen i kildematrisen, og de kopierte elementene plasseres i målmatrisen med start på den tredje posisjonen. int smallPrimes = (2, 3, 5, 7, 11, 13); int luckyNumbers = (1001, 1002, 1003, 1004, 1005, 1006, 1007); System. arrаusoru (smallPrimes, 2, luckyNumbers, 3, 4); for (int i = 0; i< luckyNumbers. length; i++ ) System. out. println (i + ": " + luckyNumbers[ i] ) ; Выполнение этих операторов приводит к следующему результату. 0 : 1001 1 : 1002 2 : 1003 3 : 5 4 : 7 5 : 11 6 : 13 Ris. 3.2. Kopiere array-elementer En matrise i Java er vesentlig forskjellig fra en matrise i C ++. Det er imidlertid praktisk talt det samme som en pekepinn til dynamisk array... Dette betyr at operatoren int a = new int [100]; // Java tilsvarer operatoren int * = new int [100]; // C ++, ikke int a [100]; // C ++ I Java kontrollerer standardsetningen rekkevidden av indekser. I tillegg er det ingen peker-aritmetikk i Java-språket - du kan ikke øke en peker for å referere til neste element array. Link til først