Java programos vertina išraiškas kontekste pareiškimus, kurie naudojami tokioms užduotims kaip kintamojo deklaravimas, sprendimo priėmimas ar iterinimas per teiginius. Teiginys gali būti išreikštas paprastu arba sudėtiniu sakiniu:
- A paprastas teiginys yra viena atskira užduoties vykdymo instrukcija; jis turi būti baigtas kabliataškiu (
;
). - A sudėtinis teiginys yra paprastų ir kitų sudėtinių sakinių, esančių tarp atvirojo ir uždarojo skliaustinio simbolių, seka (
{
ir}
), apibrėžiančiu sudėtinio teiginio ribas. Sudėtiniai teiginiai gali būti tušti, jie bus rodomi visur, kur pasirodo paprasti teiginiai, arba yra žinomi kaip blokai. Sudėtinis teiginys nėra baigtas kabliataškiu.
Šioje pamokoje sužinosite, kaip naudoti teiginius „Java“ programose. Galite naudoti tokius teiginius kaip jei
, jei-dar
, perjungti
, dėl
ir kol
deklaruoti kintamuosius ir nurodyti išraiškas, priimti sprendimus, kartoti (arba cikliuoti) teiginius, nutraukti ir tęsti iteraciją ir dar daugiau. Keletą egzotiškesnių teiginių, pvz., Reikšmių grąžinimo iš vadinamųjų metodų ir išimčių metimo, paliksiu būsimoms „Java 101“ pamokoms.
Perjungti išraiškas „Java 12“
Atminkite, kad ši mokymo programa buvo atnaujinta „Java 12“ ir joje pateikiamas trumpas įvadas perjungti
išraiškos.
Kintamos deklaracijos ir užduotys
Anksčiau pristačiau „Java“ kintamuosius ir paaiškinau, kad prieš juos reikia deklaruoti. Kadangi kintamoji deklaracija yra atskira kodo sala, tai iš tikrųjų yra sakinys - a paprastas teiginys, būti tiksliam. Visa tai yra kintamųjų deklaracijų teiginiai:
int amžius = 25; kintama palūkanų norma; char [] text = {'J', 'a', 'v', 'a'}; Stygos pavadinimas;
Kintamą deklaraciją minimaliai sudaro tipo pavadinimas, pasirinktinai sekant laužtinių skliaustų porų seką, po kurios seka pavadinimas, pasirinktinai po laužtinių skliaustų porų seka ir baigiamas kabliataškiu. Kintamasis taip pat gali būti aiškiai inicijuojamas jo deklaravimo metu.
Dabar apsvarstykite užduoties pareiškimas, kuris yra glaudžiai susijęs su kintamojo deklaracijos sakiniu. Priskyrimo sakinyje kintamajam priskiriama reikšmė (galbūt nuoroda į masyvą arba nuoroda į objektą). Štai keletas pavyzdžių:
amžius = 30; palūkanų norma = 4,0F; amžius + = 10; tekstas [1] = „A“; tekstas [2] = „V“; tekstas [3] = „A“; vardas = "Jonas Doe";
Priskyrimo sakinys yra išraiškos teiginys, kuri yra išraiška, kuri gali būti naudojama kaip sakinys, jei po jos yra kabliataškis. Šie posakiai taip pat kvalifikuojami kaip posakio teiginiai:
- Išankstinis padidėjimas (pvz.,
++ x;
) - Išankstinis išlyginimas (pvz.,
--y;
) - Postincrement (pvz.,
x ++;
) - Pabaiga (pvz.,
y--;
) - Metodo iškvietimas (pvz.,
System.out.println („Labas“);
) - Objekto kūrimas (pvz.,
nauja styginė („ABC“);
)
Kintamos deklaracijos su jshell
Tu gali naudoti jshell
eksperimentuoti su kintamomis deklaracijomis ir išraiškos teiginiais. Štai keli pavyzdžiai, kaip pradėti naudotis („Java Shell“ įvadą rasite skyrelyje „Sužinokite„ Java “iš pagrindų“):
jshell> int age = 25 age ==> 25 jshell> float interest_rate interest_rate ==> 0.0 jshell> char [] text = {'J', 'a', 'v', 'a'} text ==> char [ 4] {'J', 'a', 'v', 'a'} jshell> Stygos pavadinimo pavadinimas ==> null jshell> age = 30 age ==> 30 jshell> interest_rate = 4.0F interest_rate ==> 4.0 jshell > age + = 10 $ 7 ==> 40 jshell> text [1] = 'A' $ 8 ==> 'A' jshell> text [2] = 'V' $ 9 ==> 'V' jshell> text [3] = 'A' $ 10 ==> 'A' jshell> name = "John Doe" name ==> "John Doe" jshell> text text ==> char [4] {'J', 'A', 'V' , 'A'} jshell> amžius ++ 13 USD ==> 40 jshell> amžiaus amžius ==> 41
Pastebėti, kad amžius ++
atrodo, kad nieko nepasiekė. Štai, jūs tai matote 40
buvo priskirtas „scratch“ kintamajam $13
. Tačiau postincrement operatorius atlieka prieaugį grąžinęs dabartinę vertę. (Tiesą sakant, jis kažkur saugo dabartinę vertę, atlieka prieaugį ir tada grąžina išsaugotą vertę.) Įvedimas amžiaus tai įrodo amžiaus
yra 41, postmarkravimo operacijos rezultatas.
„Java Shell“ pateikia įvairias komandas ir funkcijas, kurios supaprastina darbą su fragmentais. Pavyzdžiui, / sąrašas
komanda rodo visus fragmentus, kurie buvo įvesti į dabartinį seansą:
jshell> / 1 sąrašas: int amžius = 25; 2: kintama palūkanų norma; 3: char [] text = {'J', 'a', 'v', 'a'}; 4: stygos pavadinimas; 5: amžius = 30 6: palūkanų_ norma = 4,0 F 7: amžius + = 10 8: tekstas [1] = 'A' 9: tekstas [2] = 'V' 10: tekstas [3] = 'A' 11: vardas = „John Doe“ 12: tekstas 13: amžius ++ 14: amžius
Kairiajame stulpelyje esantis skaičius unikaliai identifikuoja fragmentą. Galite naudoti šį numerį norėdami pakartotinai vykdyti fragmentą, išvardyti fragmentą, numesti (ištrinti) fragmentą ir pan.
jshell> / 12 teksto tekstas ==> char [4] {'J', 'A', 'V', 'A'} jshell> / sąrašas 13 13: amžius ++ jshell> / drop 7 | numestas kintamasis $ 7 jshell> / 1 sąrašas: int amžius = 25; 2: kintama palūkanų norma; 3: char [] text = {'J', 'a', 'v', 'a'}; 4: stygos pavadinimas; 5: amžius = 30 6: palūkanų norma = 4.0F 8: tekstas [1] = 'A' 9: tekstas [2] = 'V' 10: tekstas [3] = 'A' 11: vardas = "Jonas Doe" 12 : tekstas 13: amžius ++ 14: amžius 15: tekstas
Čia mes įėjome /12 iš naujo įvykdyti fragmentą Nr. 12, kuris pateikia turinį tekstas
. Tada mes įėjome / 13 sąrašas išvardyti fragmentą Nr. 13, kuris didėja amžiaus
. Toliau mes įėjome / lašas 7 ištrinti fragmentą Nr. 7 (ne daugiau amžius + = 10
fragmentas). Galiausiai įėjome / sąrašas iš naujo išvardyti visus fragmentus. Atkreipkite dėmesį, kad fragmentas Nr. 7 buvo pašalintas, o fragmentas Nr. 15 buvo pridėtas /12
komandą.
Priimdami sprendimus: jei, jei ne, ir perjunkite
Sprendimų pareiškimai leiskite programoms pasirinkti kelis vykdymo kelius. Pavyzdžiui, jei pardavėjas šį mėnesį parduoda daugiau nei 500 daiktų, suteikite pardavėjui premiją. Be to, jei mokinio įvertinimas pagal algebros testą yra didesnis nei 85 proc., Pasveikink mokinį, kad jam sekėsi gerai; priešingu atveju rekomenduokite studentui labiau mokytis kitam testui.
„Java“ palaiko jei
, jei-dar
ir perjungti
sprendimų pareiškimai. Be to, naujas perjungti
išraiškų funkcija buvo pridėta prie „Java 12“.
Jei teiginys
Paprasčiausias „Java“ sprendimų pareiškimas yra jei
sakinys, kuris vertina Bulio išraiška ir vykdo kitą teiginį, kai ši išraiška vertinama kaip teisinga. jei
sakinys turi tokią sintaksę:
jei (Būlio išraiška) pareiškimas
jei
teiginys prasideda rezervuotu žodžiu jei
ir tęsiama skliaustuose esančia Būlio išraiška, po kurios eina sakinys, kurį reikia atlikti, kai Bulio išraiška įvertina tiesą.
Šis pavyzdys rodo jei
pareiškimas. Kai amžiaus
kintamojo vertė yra 55 arba didesnė, jei
vykdo System.out.println (...);
Norėdami išsiųsti pranešimą:
if (amžius> = 55) System.out.println ("Jūs turite teisę gauti ankstyvą pensiją.");
Daugelis žmonių nori supakuoti bet kokį paprastą teiginį, kuris seka jei
sakinys petnešomis, efektyviai paverčiant jį lygiaverčiu sudėtiniu sakiniu:
if (amžius> = 55) {System.out.println ("Jūs turite teisę gauti ankstyvą pensiją."); }
Nors petnešos paaiškina, ką vykdo jei
teiginį, manau, kad įtrauka suteikia šį aiškumą ir kad petnešos nereikalingos.
Eksperimentuokite su if teiginiais
Išbandykime šį pavyzdį naudodamijshell
. Perkrauti jshell
ir tada pristatykite amžiaus
kintamasis (tipo tarpt
), kuri inicijuojama 55
:
jshell> int amžius = 55
Tada įveskite pirmąjį pavyzdį jei
teiginys (be garbanotų petnešėlių, supančių jos kūną):
jshell> if (amžius> = 55) ...> System.out.println ("Jūs turite teisę gauti ankstyvą pensiją."); Jūs turite teisę į ankstyvą išėjimą į pensiją. jshell>
Atkreipkite dėmesį, kad jshell>
greiti pakeitimai ...>
tęsimo raginimas, kai įvedate kelių eilučių fragmentą. Spaudimas Įveskite po paskutinės fragmento eilutės sukelia jshell
kad tuojau pat įvykdytų fragmentą.
Vykdyti / sąrašas išvardyti visus fragmentus. Aš pastebiu, kad jei
priskirtas teiginio fragmentas 2
mano sesijoje. Vykdoma /2 priežastys jshell
Norėdami išvardyti ir vykdyti šį fragmentą, bus išvestas tas pats pranešimas.
Tarkime, kad paskiriate 25
į amžiaus
ir tada įvykdyti iš naujo /2 (arba lygiavertį jūsų sesijos fragmento numerį). Šį kartą neturėtumėte stebėti išvesties pranešimo.
„If-else“ teiginys
jei-dar
sakinys įvertina Bulio išraiška ir vykdo sakinį. Vykdomas sakinys priklauso nuo to, ar išraiška vertinama kaip teisinga, ar klaidinga. Štai sintaksė jei-dar
pareiškimas:
jei (Būlio išraiška) pareiškimas1 Kitas pareiškimas2
jei-dar
teiginys yra panašus į jei
teiginį, tačiau jame yra rezervuotas žodis Kitas
, po kurio pateikiamas sakinys, kurį reikia įvykdyti, kai Bulio išraiška yra klaidinga.
Šis pavyzdys rodo jei-dar
pareiškimas, kuriame jaunesniam nei 55 metų asmeniui nurodoma, kiek metų liko iki ankstyvos pensijos:
if (amžius> = 55) System.out.println ("Jūs turite teisę gauti ankstyvą pensiją."); else System.out.println ("Iki ankstyvo išėjimo į pensiją turite" + (55 m.) + "metų".);
Sąlyginis operatorius vs jei-dar
Sąlyginis operatorius (?:
) yra panašus į jei-dar
pareiškimas. Tačiau šio operatoriaus negalima naudoti pakaitiniams sakiniams vykdyti. Vietoj to jis gali grąžinti tik vieną iš dviejų to paties tipo reikšmių. (Sąlyginis operatorius taip pat kartais vadinamas trinčiu operatoriumi.)
Grandininiai „jei-dar“ teiginiai
„Java“ leidžia jums susieti kelias grandines jei-dar
teiginiai kartu situacijoms, kai jums reikia pasirinkti vieną iš kelių sakinių, kuriuos norite atlikti:
jei (Būlio išraiška) pareiškimas1 kitaip jei (Būlio išraiška2) pareiškimas2 dar ... dar pareiškimasN
Grandinės darbai atliekant paskesnį jei-dar
pareiškimas, kai srovė jei
teiginio Bulio išraiška vertinama kaip klaidinga. Apsvarstykite demonstraciją:
if (temperatūra 100,0) System.out.println ("verdantis"); else System.out.println ("normalus");
Pirmas jei-dar
sakinys nustato, ar temperatūra
vertė yra neigiama. Jei taip, jis vykdo System.out.println („užšalimas“);
. Jei ne, ji vykdo sekundę jei-dar
pareiškimas.
Antras jei-dar
sakinys nustato, ar temperatūra
reikšmė yra didesnė nei 100. Jei taip, ji vykdo System.out.println ("verdantis");
. Priešingu atveju jis vykdo System.out.println ("normalus");
.
Kabanti kita problema
Kada jei
ir jei-dar
yra naudojami kartu, o šaltinio kodas nėra tinkamai įtrauktas, gali būti sunku nustatyti, kuris jei
bendrauja su Kitas
. Problemą galite pamatyti žemiau esančiame kode:
int x = 0; int y = 2; if (x> 0) if (y> 0) System.out.println ("x> 0 ir y> 0"); else System.out.println ("x <= 0");
Tikriausiai tikėtumėtės pamatyti x <= 0
kaip šio kodo išvestis, bet tai niekada neįvyks; vietoj to nieko nebus. Problema ta, kad Kitas
atitinka iki artimiausio jei
, kuris yra jei (y> 0)
. Formatuojant kodą tampa aiškiau, kas vyksta:
int x = 0; int y = 2; if (x> 0) if (y> 0) System.out.println ("x> 0 ir y> 0"); else System.out.println ("x <= 0");
Čia aiškiau nei jei (y> 0) ... dar ...
jei-dar
teiginys seka jei (x> 0)
pareiškimas. Norėdami suderinti ankstesnio pavyzdžio tikslą, turite įvesti petnešos simbolius jei (y> 0)
ir paskesnį jos pareiškimą. Iš esmės bus blokas jei (x> 0)
:
int x = 0; int y = 2; if (x> 0) {if (y> 0) System.out.println ("x> 0 ir y> 0"); } else System.out.println ("x <= 0");
Nes x> 0
įvertina netikrą, System.out.println ("x <= 0");
vykdo. Kitas
rezervuotas žodis aiškiai sutampa su jei (x> 0)
.
Jungiklio teiginys
Kai reikia pasirinkti kelis vykdymo kelius, perjungti
pareiškimas siūlo efektyvesnę alternatyvą grandinei. Pažvelkite į perjungti
pareiškimas:
perjungti (selektoriaus išraiška) {atvejis vertė1: pareiškimas1 [pertrauka;] atvejis vertė2: pareiškimas2 [pertrauka;] ... atvejis vertėN: pareiškimasN [pertrauka;] [numatytasis: pareiškimas] }
perjungti
teiginys prasideda rezervuotu žodžiu perjungti
ir tęsia a selektoriaus išraiška kuris pasirenka vieną iš vėlesnių atvejų arba numatytąjį atvejį vykdyti. Pasirinkimo išraiška vertinama kaip sveikasis skaičius, simbolis ar eilutė.
Perjungti ir skaičiuoti konstantas
Pasirinkimo išraiška taip pat gali įvertinti enum
pastovus. Aš pristatysiu enum
s būsimoje pamokoje.
Kiekvienu atveju nurodomas vykdomas sakinys. Byla prasideda nuo rezervuoto žodžio atveju
ir reikšmė, žyminti bylą. Po dvitaškio (:
) simbolis yra sakinys, kurį reikia vykdyti. Pareiškimą galima pasirinktinai sekti pertrauka;
, perkelti vykdymą į pirmąjį po perjungti
. Jei nė viena iš didžiųjų ir mažųjų raidžių etikečių neatitinka išrinktojo išraiškos vertės, pasirenkamasis numatytasis didžiosios ir mažosios raidės, prasidedančios rezervuotu žodžiu numatytas
, vykdys.
Žemiau yra a perjungti
sakinys naudojamas nustatyti, ar sveiko skaičiaus reikšmė yra lygi ar nelyginė (naudojant likutinį operatorių). Tada per bylą, kurios etiketė sutampa su likusia dalimi, ji pateikia atitinkamą pranešimą:
int i = 27; jungiklis (i% 2) {atvejis 0: System.out.println ("lyginis"); pertrauka; 1 atvejis: System.out.println ("nelyginis"); }