I Java, som på næsten ethvert sprogprogrammering er der værktøjer til at give flere gentagelser af et bestemt stykke kode eller, som de kaldes, cyklusser. Sløjfer i Java er repræsenteret af udsagn som for og mens og deres varianter. Som regel bruges sløjfer til at gentage over endimensionelle og flerdimensionelle arrays og iterable datastrukturer (inklusive samlinger) for at finde specifikke elementer og yderligere operationer med dem. Dette er dog ikke den eneste måde at bruge et værktøj som Java-løkken på. Brugseksempler vil blive givet, som de overvejes.
Den grundlæggende loopoperator i Java ermens. Kodefragmentet, der er indesluttet i dets krop, gentages, så længe tilstanden for det udtryk, der er omgivet af parenteser, efter at det opfylder sandhedens logiske værdi. Den generelle form for while-udsagnet er som følger:
mens (betingelse) {
// cyklusens krop
}
Så snart værdien af den logiske tilstand ophører med at være sand, stopper koden i sløjfens krop udførelsen, og kontrol overføres til linjen umiddelbart efter den.
For klarhedens skyld skal vi se på eksemplet vist i nedenstående figur:
Det deklarerede variabeltal har oprindeligtværdi 1. Dernæst ser vi et logisk udtryk i parentes efter operatørnavnet. Det vil være sandt, dvs. return true, så længe værdien af tællingsvariablen er mindre end eller lig med 10. I sløjfens krop øges værdien af variablen med hvert pass (iteration) med 1 og vises på konsolskærmen. Bemærk, at når variablen nåede 11, stoppede løkken.
Hvis værdien af antallet af variabler oprindeligt var lig med 11, ville loop-tilstanden være falsk, og programmet ville ikke engang komme ind i dets krop.
Det er værd at bemærke, at Java-syntaks tillader detbrug et stykke tid uden et legeme. Lad os give et eksempel. Lad os sige, at vi har to variabler i = 100 og j = 200, vi står over for opgaven med at beregne deres aritmetiske gennemsnit programmatisk - til dette kan du bruge "hule", mens:
mens (++ i <- j);
Som et resultat vil værdien af en af de to variabler være lig med gennemsnittet af deres oprindelige værdier. Som du kan se, fungerede løkken fint uden en krop og udførte alle de nødvendige handlinger i et betinget udtryk.
I de foregående eksempler, hvis det betingede udtrykoprindeligt returneret falsk, så programudførelse ville ignorere loop kroppen og gå videre. Imidlertid opstår der ofte situationer, hvor udførelsen af koden indeholdt i sløjfekroppen er obligatorisk mindst en gang, uanset sandheden i det betingede udtryk. Med andre ord sker det, at det er nødvendigt at kontrollere sandheden af et betinget udtryk ikke i begyndelsen, men i slutningen af cyklussen. En variation af while-loop kaldet do-while kan give denne funktionalitet. Den har følgende form:
gøre {
// cyklusens krop
} mens (betingelse);
Som vi kan se, går kroppen af sløjfen først til udførelse, og først derefter kontrolleres sandheden af tilstanden - og så videre hver iteration.
Koden ovenfor fungerer sådan som dennedet samme som med et regelmæssigt stykke tid. Men hvis vi havde tildelt værdien 11 til variabelantalet, ville løkkenes krop stadig blive udført en gang, før operatøren kunne teste udtrykket for at være sandt.
For-loop er en alsidig ogen effektiv sprogform i Java. Før den femte version af Java SDK var der kun én traditionel form for erklæringen, og derefter dukkede en ny op - for hver. I dette afsnit bliver vi bekendt med den traditionelle operatørformular. for Java ser sløjfen sådan ud:
Før kontrol overføres til koden i kroppenloop, først initialiseres variablen i til at fungere som en tæller. Dernæst kontrolleres et betinget udtryk, hvor tælleren sammenlignes med en bestemt værdi, og hvis den returnerer sand, udføres sløjfens krop. Derefter ændres tællerværdien med et forudbestemt trin, og det betingede udtryk kontrolleres igen og så videre, indtil betingelsen bliver falsk. Runddiagrammet nedenfor illustrerer alle faser af cyklussen.
For en bedre forståelse er her et eksempel på, hvordan Java-loop fungerer:
Vi ser, at tælleren brugesvariabel loopVal. Efter hver iteration af sløjfen øges dens værdi med 1, og dette fortsætter, indtil den når 11. Bemærk, at kontrolvariablen kan deklareres uden for for-sætningen, men hvis du ikke vil bruge denne variabel hvor som helst undtagen i en loop anbefales det at erklære det direkte i erklæringen. Husk, at en variabel, der er erklæret i selve udsagnet, er omfattet af selve sløjfen.
Der er situationer, hvor du har brug for at erklæreflere variabler, der styrer sløjfen. For Java giver en sløjfe dig mulighed for at specificere to eller flere variabler adskilt af kommaer, og dette kan gøres både under initialiseringen og under iteration. En sådan operatør vil se sådan ud:
for (int i = 1, int j = 10; i <j; ++ i, --j) {}
For hver iteration stiger værdien af variablen i med 1, og værdien af variablen j falder med 1. Iterationerne udføres, indtil i er større end eller lig med j.
For-loop er ret fleksibelkonstruktion, da alle tre af dens dele (initialisering, tilstand og stigning / nedgang) kan bruges off-label. For eksempel kan du erstatte en hvilken som helst boolsk variabel i stedet for et betinget udtryk med en kontrolvariabel.
boolsk udgang = falsk;
for (int i = 0 ;! exit; ++ i) {
exit = sandt;
}
I eksemplet ovenfor kan vi observere, hvordan arbejdetSløjfen er absolut uafhængig af kontrolvariablen i, og antallet af iterationer afhænger udelukkende af det øjeblik, hvor den variable udgang bliver sand. Desuden kan kontrolvariablen fjernes fuldstændigt fra sløjfen, og dette påvirker ikke dens funktion på nogen måde: for (;! Exit;) {}. Selvom det ikke er den smarteste måde at programmere på, kan det til tider være nyttigt. Det vigtigste er at sørge for en situation, hvor variablen tager den nødvendige værdi for at forlade sløjfen for ikke at gøre den til en uendelig.
For Java kan en sløjfe erklæres som dennemåde: for (;;) {}. Dette er et typisk eksempel på en uendelig sløjfe med specielle afbrydelsesbetingelser. Vi vil tale om, hvordan man afbryder sådanne cyklusser lidt senere.
Java foreach loop gælder altid foriterere over elementerne i en matrix eller en eller anden datastruktur og udføre visse gentagne operationer på dem. Et eksempel på denne form for erklæringen er vist nedenfor:
Iterationsvariablen erklæresnavn, og det tidligere deklarerede array af strenge navne fungerer som det andet argument for operatøren. Variabelnavnet tager værdierne for hvert element i arrayet igen, indtil alle dets elementer er blevet hentet. Det skal bemærkes, at typen af variablen skal være kompatibel med typen af de elementer, der er gemt i arrayet. Navnvariablen er også tilgængelig udelukkende til læsning, og et forsøg på at ændre den ændrer ikke selve elementet i arrayet.
Der er tre sløjfeafbrydende udsagn:bryde, vende tilbage og fortsætte. De to første er i stand til fuldstændigt at afbryde sløjfens arbejde, mens fortsat kun afbryder arbejdet med den nuværende iteration. Hvis du bevidst bruger en uendelig Java-loop i din kode, skal disse operatører være til stede i den. Lad os se på et simpelt eksempel på brug af pause:
Selvom dette for udsagn giver 11 iterationer, vil kun 8 blive udført, for når i-tælleren er 7, udløses tilstanden med pausesætningen i kroppen.
Retursætningen fungerer på samme måde med den forskel, at den ikke kun forlader Java-sløjfen, men også afslutter den metode, hvor sløjfen er placeret.
Husk, at pause afbryderkun den cyklus i kroppen, hvor den er direkte placeret, dvs. hvis du bruger det i en indlejret sløjfe, slutter den ydre sløjfe ikke. Til dette kan break-erklæringen bruges som en civiliseret form for goto.
I denne variant bruges denne operator ii forbindelse med en etiket, som giver dig mulighed for at organisere en udgang ikke kun fra sløjfer, men også fra enhver blok af kode. En etiket er en passende navngivet identifikator efterfulgt af et kolon. Mærkaten erklæres i begyndelsen af kodeblokken for at blive markeret. For at afbryde udførelsen af en markeret blok skal du erklære det rigtige sted: break tag_name. Overvej eksemplet i nedenstående figur:
Koden erklærer tre blokke med navnene på One-etiketterneTo henholdsvis tre. Bruderklæringen mærket to er indlejret i alle tre blokke, men når den udløses, afslutter programmet tre og to og fortsætter udførelsen i en. De der. vi ser to meddelelser i konsollen: Tre og en.
Vi blev bekendt med begrebet sløjfer i Java,det vigtigste mens og for udsagn, såvel som deres do-while og for hver form, henholdsvis. For en bedre forståelse anbefaler vi at udføre øvelser ved hjælp af disse operatorer i forskellige former samt forskellige måder at afbryde dem og flytte fra en blok til en anden.