„Java“ programos apdoroja duomenis vertindamos išraiškos, kurie yra literatų, metodo iškvietimų, kintamųjų pavadinimų ir operatorių deriniai. Įvertinus išraišką, paprastai gaunama nauja reikšmė, kurią galima išsaugoti kintamajame, naudoti priimant sprendimą ir pan.
Šioje pamokoje sužinosite, kaip rašyti „Java“ programų išraiškas. Daugeliu atvejų „Java“ išraiškoms rašyti naudosite operatorius, ir jų yra daug operatorių tipai mokėti naudotis. Trumpai supažindinsiu su „Java“ operatorių tipais (įskaitant priedų, bitų, loginių, sąlyginių, poslinkių ir lygybės tipus) ir jų operandus. Taip pat sužinosite apie svarbias sąvokas, tokias kaip operatoriaus perkrova ir operatoriaus pirmenybė, ir pamatysite primityvaus tipo konversijos demonstravimą. Baigsiu su maža „Java“ programa, kurią galite naudoti patys atlikdami primityvaus tipo konversijas.
atsisiųsti Gauti kodą Atsisiųskite šaltinį, pvz., programas, šioje pamokoje. Sukūrė Jeffas Friesenas, skirtas „JavaWorld“.Paprasti posakiai
A paprasta išraiška yra pažodinis, kintamo pavadinimo arba metodo iškvietimas. Operatoriai nedalyvauja. Štai keletas paprastų posakių pavyzdžių:
52 // sveikojo skaičiaus pažodinis amžius // kintamojo vardas System.out.println ("ABC"); // metodo iškvietimas „Java“ // eilutės tiesioginis žodis 98.6D // dvigubo tikslumo plūduriuojančio taško pažodinis žodis 89L // ilgasis sveikasis skaičius
Paprasta išraiška turi a tipo, kuris yra arba primityvus, arba pamatinis tipas. Šiuose pavyzdžiuose 52
yra 32 bitų sveikasis skaičius (tarpt
); System.out.println ("ABC");
yra niekinis (tuštuma
), nes jis negrąžina vertės;„Java“
yra eilutė (Stygos
); 98.6D
yra 64 bitų dvigubo tikslumo slankiojo kablelio reikšmė (dvigubai
); ir 89L
yra 64 bitų ilgio sveikasis skaičius (ilgas
). Mes nežinome amžiaus
tipo.
Eksperimentuokite su jshell
Naudodamiesi, galite lengvai išbandyti šias ir kitas paprastas išraiškas jshell
. Pavyzdžiui, įveskite 52
prie jshell>
raginimą ir gausite panašų į šį išvestį:
$1 ==> 52
$1
yra a vardas įbrėžimo kintamasis kad jshell
kuria saugoti 52
. (Įbrėžimų kintamieji kuriami, kai tik įvedami literalai.) Vykdyti System.out.println (1 USD)
ir pamatysi 52
kaip išvestis.
Galite bėgti jshell
su -v
komandinės eilutės argumentas (jshell -v
), kad būtų sukurtas išsamus grįžtamasis ryšys. Šiuo atveju įėjimas 52
gautų tokį pranešimą, kuris atskleistų tą nulio kintamąjį $1
turi tarpt
(32 bitų sveikasis skaičius) tipas:
| sukurtas įbrėžimo kintamasis $ 1: tarpt
Tada pabandykite įvesti amžiaus
. Tokiu atveju tikriausiai gausite klaidos pranešimą, kad simbolis nerastas. „Java Shell“ daro prielaidą amžiaus
yra kintamasis, tačiau jis nežino jo tipo. Turėtumėte įtraukti tipą; pavyzdžiui, pažiūrėkite, kas nutiks, jei įvesite int amžiaus
.
Sudėtinės išraiškos
A sudėtinė išraiška susideda iš vienos ar daugiau paprastų išraiškų, integruotų į didesnę išraišką per operatorius, kuri yra instrukcijų seka, simboliškai vaizduojama šaltinio kode. Operatorius transformuoja savo išraišką operandas (-ai) į kitą vertę. Pavyzdžiui, 6 * 5
, daugybos operatorius (*
) transformuoja operandus 6
ir 5
į 30.
Sudėtines išraiškas galima sujungti į didesnes išraiškas. Pavyzdžiui, 6 * 5 + 10
pateikia sudėtinę išraišką 6 * 5
ir sudėtinė išraiška, susidedanti iš jų produkto, pridėjimo operatoriaus +
ir numeris 10
. Vertinimo tvarką (pirmiausia padauginkite, o tada pridėkite) diktuoja „Java“ viršenybės taisyklė, kurį netrukus pasieksime.
Sudėtinės išraiškos taip pat gali būti paprastos
6 * 5
yra sudėtinė išraiška, susidedanti iš dviejų paprastų posakių, 6
ir 5
. Bet 6 * 5
taip pat yra paprasta išraiška iš +
perspektyva. +
operatorius mato tik jų produktą - 30, o tai yra paprasta išraiška.
Operatoriai ir operandai
„Java“ operatoriai klasifikuojami pagal jų operandų skaičių:
- A unarinis operatorius turi, pavyzdžiui, vieną operandą unarinis minusas (pvz.,
-5
). - A dvejetainis operatorius turi du operandus, pavyzdžiai yra daugyba ir sudėjimas.
- A trinaris operatorius turi tris operandus; pavyzdys yra sąlyginis operatorius (
?:
).
„Java“ operatoriai taip pat skirstomi pagal pozicijas:
- A priešdėlių operatorius yra unarinis operatorius, einantis prieš operandą (pvz.,
-5
). - A postfix operatorius yra unariškas operatorius, kuris seka savo operandą (pvz.,
amžius ++;
- pridėti 1 prieamžiaus
skaitinė vertė). - An infix operatorius yra dvejetainis arba trinaris operatorius tarp operatoriaus operandų (pvz.,
amžius + 5
).
Kitas jshell pavyzdys
Aš pristatysiu daugiau operatorių tolesniuose skyriuose, kur pateikiu pavyzdžius paraiškų forma. Taip pat galite išbandyti šiuos operatorius jshell
, panašiai:
jshell> 6 + 2 $ 1 ==> 8 jshell> 7 * $ 1 $ 2 ==> 56
Šiuo atveju pirmiausia įvedame išraišką 6 + 2
, kuris jshell
įvertina, priskirdami gautą 8 nuliui kintamąjį $1
. Toliau mes padauginsime $1
pateikė 7
, kuriame 56 kintamieji kintamieji $2
. Šis pavyzdys parodo, kad „Java“ išraiškose galite naudoti įbrėžimo kintamuosius.
Perkrauti operatoriai
Pliusas (+) yra operacijos ženklo pavyzdys perkrautas operatorius, kuris yra operatorius, kuris atlieka vieną iš kelių operacijų, pagrįstų tipai jos operandų. Pliusas operatorius atlieka sveiko skaičiaus pridėjimą, kai abu operandai yra sveiki skaičiai, slankiojo kablelio pridėjimą, kai abu operandai yra slankiojo kablelio vertės, ir eilučių sujungimą, kai abu operandai yra eilutės. Operatorius minusas (-) taip pat perkrautas, atliekant sveikojo skaičiaus arba slankiojo kablelio atimimą.
Operatorių tipai „Java“
Priedų operatoriai
priedų operatoriai padidinti arba sumažinti skaitinę vertę sudedant ir atimant. Priedų operatoriai apima papildymą (+
), atimtis (-
), po pakeitimo (--
), postincrement (++
), išankstinis nustatymas (--
) ir išankstinis prieaugis (++
). Styginių sujungimas (+
) taip pat laikomas priedu. Štai oficialus kiekvieno iš šių operatorių apibrėžimas:
- Papildymas: Duota
operandas1 + operandas2
, kur kiekvienas operandas turi būti simbolio ar skaitinio tipo, pridėtioperandas2
įoperandas1
ir grąžinti sumą. Pavyzdys:4 + 6
. - Atimtis: Duota
operandas1 - operandas2
, kur kiekvienas operandas turi būti simbolio ar skaitinio tipo, atimkiteoperandas2
nuooperandas1
ir grąžinti skirtumą. Pavyzdys:4 - 6
. - Postdecement: Duota
kintamasis--
, kurkintamasis
turi būti simbolių ar skaitinio tipo, atimti 1 iškintamasis
vertė (saugant rezultatąkintamasis
) ir grąžinkite pradinę vertę. Pavyzdys:x--;
. - Postincrement: Duota
kintamasis++
, kurkintamasis
turi būti simbolių ar skaitinio tipo, pridėti 1 priekintamasis
vertė (saugant rezultatąkintamasis
) ir grąžinkite pradinę vertę. Pavyzdys:x ++;
. - Išankstinis išlyginimas: Duota
--kintamasis
, kurkintamasis
turi būti simbolių ar skaitinio tipo, atimti 1 iš jo vertės, išsaugoti rezultatąkintamasis
ir grąžinkite naują sumažintą vertę. Pavyzdys:--x;
. - Išankstinis prieaugis: Duota
++kintamasis
, kurkintamasis
turi būti simbolių ar skaitinio tipo, prie jo vertės pridėkite 1, išsaugokite rezultatąkintamasis
ir grąžinkite naują padidintą vertę. Pavyzdys:++ x;
. - Styginių sujungimas: Duota
operandas1 + operandas2
, kur yra bent vienas operandasStygos
įveskite, pridėkiteoperandas2
eilutės atvaizdavimasoperandas1
eilutę ir pateikia rezultatą. Pavyzdys:„A“ + „B“
.
Sudėjimo, atimties, sumažinimo, postmento, iš anksto sumažinimo ir išankstinio prieaugio operatoriai gali generuoti reikšmes, peržengiančias rezultato tipo ribas. Pavyzdžiui, pridėjus dvi dideles teigiamas 64 bitų sveikojo skaičiaus reikšmes, bus gaunama reikšmė, kurios negalima pateikti 64 bitais. Atsiradusio perpildymo „Java“ priedų operatoriai neaptinka ir nepraneša.
Perpildymo aptikimas „Java“ standartinės klasės bibliotekoje
Standartinė klasės biblioteka Matematika
klasė apima perpildymo nustatymo metodus. Pavyzdžiui, int addExact (int x, int y)
prideda reikšmes į x
ir y
, grąžinant sumą arba išmetant išimtį dėl perpildymo.
Programos pavyzdys: Priedų operatoriai
1 sąraše pateikiama nedidelė programa, skirta žaisti su „Java“ priedų operatoriais.
Sąrašas 1. „Java“ priedų operatoriai (AddOp.java)
class AddOp {public static void main (String [] args) {System.out.println (125 + 463); System.out.println (2,0 - 6,3); int amžius = 65; System.out.println (amžius); System.out.println (amžius--); System.out.println (amžius ++); System.out.println (- amžius); System.out.println (++ amžius); System.out.println („A“ + „B“); }}
Ankstesnėje pamokoje išmokote naudotis JDK javac
įrankis sudaryti Java šaltinio kodą ir java
įrankis paleisti gautą programą. Norėdami sukompiliuoti 1 sąrašą, vykdykite šią komandą:
javac AddOp.java
Darant prielaidą, kad kompiliacija yra sėkminga, turėtumėte stebėti AddOp.class
failą dabartiniame kataloge. Norėdami ją paleisti, vykdykite šią komandą:
java AddOp
AddOp
atsako pateikdamas tokią produkciją:
588 -4,3 65 65 64 64 65 AB
Studijuojant šią išeitį galima įžvelgti postincrement, postdecrement, preincrement ir preecrement operatorius. Jei norite padidinti / sumažinti, amžiaus
Dabartinė vertė yra išvedama prieš didinimo / mažinimo operaciją. Dėl išankstinio prieaugio / išankstinio nustatymo operacija atliekama ir jos rezultatas saugomas amžiaus
, ir tada amžiaus
nauja vertė yra išvestis.
Kartoti su „Java“ operatoriais
Priedų operatoriai yra ypač naudingi iteracijos pareiškimas, kur jie naudojami pereiti į kitą kartojimą. Apie iteracijos teiginius sužinosite kitoje „Java 101“ pamokoje.
Masyvo indekso operatorius
masyvo indekso operatorius ([]
) pasiekia masyvo elementą pateikdamas elementą indeksas (pozicija). Šis operatorius dedamas po masyvo kintamojo pavadinimu, kaip pažymiai [0]
(pasiekite pirmąjį elementą masyve, priskirtą pažymiai
; pirmasis elementas saugomas indekse 0). Štai oficialus apibrėžimas:
Duota kintamasis[indeksas]
, kur indeksas
turi būti sveikasis skaičius (tarpt
) tipą, nuskaitykite vertę iš jos arba išsaugokite ją kintamasis
saugojimo elementas toje vietoje indeksas
. Pavyzdys: temperatūra [1]
Vertė perduota indeksas
yra 32 bitų sveikasis skaičius, kuris yra arba 0, arba teigiama reikšmė, svyruojanti iki vienos, mažesnės už masyvo ilgį, kuri nurodoma pridedant .ilgis
į masyvo pavadinimą. Pavyzdžiui, pažymiai.ilgis
grąžina priskirtą masyvo elementų skaičių pažymiai
.
Masyvo kintamieji ir masyvai
pažymiai
nėra masyvas, bet yra kintamasis, kuriame yra nuoroda į masyvą sudarantį atminties sritį. Tai galioja visoms „Java“ masyvams. Tačiau tai įprasta nurodyti pažymiai
arba bet kuris masyvo kintamasis kaip masyvas.
Programos pavyzdys: masyvo indekso operatorius
2 sąraše pateikiamas programos pavyzdinis šaltinis, leidžiantis žaisti su masyvo indekso operatoriumi.
2 sąrašas. „Java“ masyvo indekso operatorius („ArrayIndexOp.java“)
class ArrayIndexOp {public static void main (String [] args) {int [] grade = {89, 90, 68, 73, 79}; System.out.println (pažymiai [1]); pažymiai [1] = 91; System.out.println (pažymiai [1]); int indeksas = 4; System.out.println (pažymiai [rodyklė]); System.out.println (['C' - 'A'] laipsniai); // System.out.println (pažymiai [1D]); }}
2 sąrašas yra kiek įdomesnis nei „Listing 1.“. Sukūrę penkių elementų, vienmatį sveikųjų skaičių masyvą (per masyvo iniciatorių) ir priskyrę masyvo nuorodą į pažymiai
, pagrindinis ()
gauna prieigą prie įvairių elementų. Ypač domina du daiktai:
- Masyvo indekso operatoriaus indeksas galiausiai turi būti 32 bitų sveikasis skaičius (0 arba teigiama reikšmė). Galite nurodyti sveiko skaičiaus kintamojo pavadinimą (pvz.,
indeksas
), kuriame nurodoma indekso reikšmė. - Galite nurodyti skaičiavimą, susijusį su simbolių literalais. (Vėliau šioje pamokoje supažindinsiu su tipo konversijomis ir sužinosite, kodėl
„C“ - „A“
sukuria sveiką skaičių (2), kuris naudojamas kaip galiojantis indeksas.)
Paskutinis pavyzdys, kuris praeina 1D
kaip indeksas masyvo indekso operatoriui, yra komentuojamas, nes jis nebus kompiliuojamas. Jei atšauksite eilutę ir bandysite sudaryti 2 sąrašą, gausite klaidos pranešimą apie nesuderinamus tipus: "galimas nuostolingas konversija iš dvigubai
į tarpt.
."
Sudaryti 2 sąrašą (javac ArrayIndexOp.java
) ir paleiskite programą (java ArrayIndexOp
). Turėtumėte stebėti šį rezultatą:
90 91 79 68
Masyvo indekso operatorius ir daugiamačiai masyvai
Galite naudoti šį operatorių su daugiamatėmis masyvomis. Pavyzdžiui, darant prielaidą, kad yra dvimatis išlaidos
masyvas, išlaidos [0] [1]
pasiekia pirmai eilutei priskirtą elementą (per [0]
) ir antrą stulpelį (per [1]
).
Užduočių operatoriai
užduoties operatorius (=
) kintamajam priskiria išraiškos vertę (pvz., i = 6;
), įskaitant masyvo elementą (pvz., x [0] = 15;
). Išraiška ir kintamasis turi būti užduotis suderinama, ty jų tipai turi sutikti. Pvz., Sveiko skaičiaus kintamajam negalima priskirti eilutės tiesioginės raidės. Aš paaiškinsiu daugiau apie tai, kai aptarsime tipo konversijas.
Sudėtiniai priskyrimo operatoriai (+=
, -=
, *=
, /=
, %=
, &=
, |=
, ^=
, <<=
, >>=
, >>>=
) įvertinti išraiškas ir priskirti rezultatus kintamiesiems vienu žingsniu. Kiekviena išraiška ir kintamasis turi būti suderinami su priskyrimu. Kiekvienas operatorius yra naudinga nuoroda. Pavyzdžiui, užuot nurodžius x = x + 3;
, galite nurodyti trumpesnį ir lygiavertį x + = 3;
.
Trumpai!
Užuot nurodęs x = x + 1;
arba x = x - 1;
, galite nurodyti trumpesnį x + = 1;
arba x - = 1;
. Galėtum sutaupyti dar daugiau klavišų paspaudimus nurodant trumpesnius x ++;
arba x--;
.