Java lietojumprogrammas apstrādā datus, novērtējot izteicieni, kas ir literāļu, metožu izsaukumu, mainīgo nosaukumu un operatoru kombinācijas. Izteiksmes novērtēšana parasti rada jaunu vērtību, kuru var saglabāt mainīgajā, izmantot lēmuma pieņemšanai utt.
Šajā apmācībā jūs uzzināsiet, kā rakstīt izteiksmes savām Java programmām. Daudzos gadījumos Java izteicienu rakstīšanai izmantosiet operatorus, un to ir daudz operatoru veidi lai zinātu, kā lietot. Es īsi iepazīstināšu ar Java operatoru tipiem (ieskaitot piedevu, bitu, loģisko, nosacīto, nobīdes un vienlīdzības tipus) un to operandus. Jūs arī uzzināsiet par tādiem svarīgiem jēdzieniem kā operatora pārslodze un operatora prioritāte, un jūs redzēsiet primitīva tipa pārveidošanas demonstrāciju. Es noslēgšu ar nelielu Java programmu, kuru varat izmantot, lai patstāvīgi praktizētu primitīva tipa pārveidojumus.
lejupielādēt Iegūt kodu Lejupielādējiet šajā apmācībā avota kodu, piemēram, lietojumprogrammām. Izveidoja Jeff Friesen JavaWorld.Vienkārši izteicieni
A vienkārša izteiksme ir burtisks, mainīga nosaukuma vai metodes izsaukums. Nav iesaistīti operatori. Šeit ir daži vienkāršu izteicienu piemēri:
52 // vesels skaitlis burtiskais vecums // mainīgā nosaukums System.out.println ("ABC"); // metodes izsaukums "Java" // virknes literāls 98.6D // dubultās precizitātes peldošā komata literālis 89L // garais veselais skaitlis literāls
Vienkāršai izteiksmei ir tips, kas ir vai nu primitīvs, vai atsauces tips. Šajos piemēros 52
ir 32 bitu vesels skaitlis (int
); System.out.println ("ABC");
ir spēkā neesošs (spēkā neesošs
), jo tā neatgriež vērtību;"Java"
ir virkne (Stīga
); 98.6D
ir 64 bitu dubultas precizitātes peldošā komata vērtība (dubultā
); un 89L
ir 64 bitu garš skaitlis (ilgi
). Mēs nezinām vecums
veida.
Eksperimentē ar jshell
Izmantojot šo opciju, varat viegli izmēģināt šos un citus vienkāršus izteicienus jshell
. Piemēram, ievadiet 52
pie jshell>
uzvedne, un jūs saņemsit kaut ko līdzīgu šādai izejai:
$1 ==> 52
$1
ir a nosaukums nulles mainīgais to jshell
rada, lai uzglabātu 52
. (Scratch mainīgie tiek izveidoti ikreiz, kad tiek ievadīti literāļi.) Izpildīt System.out.println ($ 1)
un jūs redzēsiet 52
kā izvadi.
Jūs varat palaist jshell
Ar -v
komandrindas arguments (jshell -v
), lai radītu izteiksmīgu atgriezenisko saiti. Šajā gadījumā ieeja 52
rezultātā parādīsies šāds ziņojums, atklājot šo nulles mainīgo $1
ir int
(32 bitu vesels skaitlis) tips:
| izveidots nulles mainīgais $ 1: int
Pēc tam mēģiniet ievadīt vecums
. Šajā gadījumā jūs, iespējams, saņemsit kļūdas ziņojumu, ka simbols nav atrasts. Java apvalks to pieņem vecums
ir mainīgais, taču tā veidu nezina. Jums būtu jāiekļauj veids; piemēram, skatiet, kas notiek, ja ievadāt int vecums
.
Salikti izteicieni
A salikta izteiksme sastāv no viena vai vairākiem vienkāršiem izteicieniem, kas integrēti lielākā izteiksmē, izmantojot operators, kas ir avotu kodā simboliski attēlota instrukciju secība. Operators pārveido savu izteiksmi operands (-i) citā vērtībā. Piemēram, 6 * 5
, reizināšanas operators (*
) pārveido operandus 6
un 5
30.
Saliktās izteiksmes var apvienot lielākās izteiksmēs. Piemēram, 6 * 5 + 10
parāda salikto izteiksmi 6 * 5
un salikta izteiksme, kas sastāv no viņu produkta, pievienošanas operatora +
, un numuru 10
. Novērtēšanas secību (vispirms reiziniet un pēc tam pievienojiet) nosaka Java prioritātes noteikums, pie kuras mēs drīz nonāksim.
Arī saliktie izteicieni var būt vienkārši
6 * 5
ir salikta izteiksme, kas sastāv no divām vienkāršām izteiksmēm, 6
un 5
. Bet 6 * 5
ir arī vienkārša izteiksme no +
perspektīva. The +
operators redz tikai viņu produktu 30, kas ir vienkārša izteiksme.
Operatori un operandi
Java operatorus klasificē pēc to operandu skaita:
- A unārs operators ir viens operands, piemēram unāra mīnus (piem.,
-5
). - A binārs operators ir divi operandi, piemēri ir reizināšana un saskaitīšana.
- A trīskāršais operators ir trīs operandi; piemērs ir nosacīts operators (
?:
).
Java operatorus klasificē arī pēc atrašanās vietas:
- A prefiksu operators ir vienotais operators, kas atrodas pirms operanda (piem.,
-5
). - A postfix operators ir unārais operators, kurš seko tā operandam (piemēram,
vecums ++;
- pievienot 1 uzvecums
skaitliskā vērtība). - An infix operators ir binārs vai trīskāršs operators starp operatora operandiem (piem.,
vecums + 5
).
Vēl viens jshell piemērs
Turpmākajās sadaļās es iepazīstināšu ar vairākiem operatoriem, kur piemēru veidā es sniedzu piemērus. Jūs varētu izmēģināt arī šos operatorus jshell
, tāpat kā:
jshell> 6 + 2 $ 1 ==> 8 jshell> 7 * $ 1 $ 2 ==> 56
Šajā gadījumā mēs vispirms ievadām izteiksmi 6 + 2
, kas jshell
novērtē, piešķirot iegūto 8, lai skrāpētu mainīgo $1
. Tālāk mēs reizinām $1
pēc 7
, kurā 56 mainīgie mainās $2
. Šis piemērs parāda, ka Java izteicienos var izmantot skrāpējumu mainīgos.
Pārslogoti operatori
Operators plus (+) ir simbola piemērs pārslogots operators, kas ir operators, kurš veic vienu no vairākām operācijām, pamatojoties uz veidi tās operandiem. Pluss operators veic vesela skaitļa pievienošanu, ja abi operandi ir veseli skaitļi, peldošā komata pievienošanu, ja abi operandi ir peldošā komata vērtības, un virkņu savienošanu, ja abi operandi ir virknes. Operators mīnus (-) ir arī pārslogots, veicot veselu vai peldošu punktu atņemšanu.
Operatoru veidi Java
Piedevu operatori
The piedevu operatori palieliniet vai samaziniet skaitlisko vērtību, saskaitot un atņemot. Piedevu operatori ietver pievienošanu (+
), atņemšana (-
), postdecement (--
), postincrement (++
), priekšnoteikums (--
) un iepriekšēju pieaugumu (++
). Stīgu savienošana (+
) arī uzskata par piedevu. Šeit ir formāla definīcija katram no šiem operatoriem:
- Papildinājums: Dots
operands1 + operands2
, kur katram operandam jābūt ar rakstzīmi vai ciparu, pievienojietoperands2
uzoperands1
un atdodiet summu. Piemērs:4 + 6
. - Atņemšana: Dots
operands1 - operands2
, kur katram operandam jābūt ar rakstzīmi vai ciparu, atņemietoperands2
nooperands1
un atgrieziet starpību. Piemērs:4 - 6
. - Pēcdzemdības: Dots
mainīgais--
, kurmainīgais
jābūt rakstzīmju vai ciparu tipa, atņemiet 1 nomainīgais
vērtība (saglabājot rezultātumainīgais
) un atgrieziet sākotnējo vērtību. Piemērs:x--;
. - Postincrement: Dots
mainīgais++
, kurmainīgais
jābūt rakstzīmju vai ciparu tipam, pievienojiet 1 uzmainīgais
vērtība (saglabājot rezultātumainīgais
) un atgrieziet sākotnējo vērtību. Piemērs:x ++;
. - Priekšnoteikums: Dots
--mainīgais
, kurmainīgais
jābūt rakstzīmju vai ciparu tipam, no vērtības atņemiet 1, rezultātu uzglabājietmainīgais
un atgrieziet jauno samazināto vērtību. Piemērs:--x;
. - Priekšnoteikums: Dots
++mainīgais
, kurmainīgais
jābūt rakstzīmju vai ciparu tipam, pievienojiet tās vērtībai 1, rezultātu uzglabājietmainīgais
un atgrieziet jauno palielināto vērtību. Piemērs:++ x;
. - Stīgu savienošana: Dots
operands1 + operands2
, kur vismaz viens operands irStīga
ierakstiet, pievienojietoperands2
virknes attēlojumsoperands1
virknes attēlojumu un atgriež rezultātu. Piemērs:"A" + "B"
.
Saskaitīšanas, atņemšanas, pēcdzemdības, pēcpiegādes, priekšizcenojuma un priekšcenojuma operatori var radīt vērtības, kas pārspēj rezultātu veida robežas. Piemēram, pievienojot divas lielas pozitīvas 64 bitu vesela skaitļa vērtības, var iegūt vērtību, kuru nevar attēlot 64 bitos. Java piedevu operatori nenosaka radušos pārpildi un par to neziņo.
Pārplūdes noteikšana Java standarta klases bibliotēkā
Standarta klases bibliotēka Matemātika
klasē ir pārplūdumu noteikšanas metodes. Piemēram, int addExact (int x, int y)
pievieno vērtības iekš x
un y
, atgriežot summu vai izmetot izņēmumu pārplūdes gadījumā.
Lietojumprogrammas piemērs: Piedevu operatori
1. saraksts parāda nelielu lietojumprogrammu spēlēšanai ar Java piedevu operatoriem.
Saraksts 1. Piedevu operatori Java (AddOp.java)
klase AddOp {public static void main (String [] args) {System.out.println (125 + 463); System.out.println (2,0 - 6,3); int vecums = 65; System.out.println (vecums); System.out.println (vecums--); System.out.println (vecums ++); System.out.println (- vecums); System.out.println (++ vecums); System.out.println ("A" + "B"); }}
Iepriekšējā apmācībā jūs uzzinājāt, kā izmantot JDK javac
rīks Java avota koda un java
rīks, lai palaistu iegūto lietojumprogrammu. Lai apkopotu 1. sarakstu, izpildiet šādu komandu:
javac AddOp.java
Pieņemot, ka kompilācija ir veiksmīga, jums jāievēro AddOp.class
failu pašreizējā direktorijā. Lai to palaistu, izpildiet šādu komandu:
java AddOp
AddOp
atbild, ražojot šādu produkciju:
588 -4,3 65 65 64 64 65 AB
Šīs izejas izpēte piedāvā ieskatu postincrement, postdecrement, preincrement un preecrement operatoros. Postcrement / postdrement, vecums
pašreizējā vērtība tiek izvadīta pirms pieauguma / samazināšanas operācijas. Priekšpiegādei / priekšnoteikumam darbība tiek veikta, un tās rezultāts tiek saglabāts mapē vecums
, un tad vecums
tiek izvadīta jaunā vērtība.
Atkārtojas ar Java operatoriem
Piedevu operatori ir īpaši noderīgi atkārtojuma paziņojums, kur tos izmanto, lai pārietu uz nākamo atkārtojumu. Par iterācijas paziņojumiem uzzināsiet nākamajā Java 101 apmācībā.
Masīva indeksa operators
The masīva indeksa operators ([]
) piekļūst masīva elementam, sniedzot elementu indekss (amats). Šis operators tiek ievietots pēc masīva mainīgā nosaukuma, kā tas ir pakāpes [0]
(piekļūt pirmajam elementam masīvā, kas piešķirts pakāpes
; pirmais elements tiek saglabāts indeksā 0). Šeit ir oficiāla definīcija:
Dots mainīgais[indekss]
, kur indekss
jābūt veselam skaitlim (int
) tipa, nolasiet vērtību no vērtības vai saglabājiet tajā mainīgais
krātuves elements vietā indekss
. Piemērs: temperatūra [1]
Vērtība, kas nodota indekss
ir 32 bitu vesels skaitlis, kas ir vai nu 0, vai arī pozitīva vērtība ir viena, kas mazāka par masīva garumu, un to norāda pievienojot .garums
masīva nosaukumam. Piemēram, pakāpes.garums
atgriež piešķirto masīva elementu skaitu pakāpes
.
Masīvu mainīgie vs masīvi
pakāpes
nav masīvs, bet ir mainīgais, kas satur atsauci uz atmiņas reģionu, kas veido masīvu. Tas attiecas uz visiem Java masīviem. Tomēr tas ir parasts atsaukties pakāpes
vai jebkuru masīva mainīgo kā masīvu.
Lietojumprogrammas piemērs: Masīva indeksa operators
2. sarakstā tiek parādīts avota kods lietojumprogrammas paraugam, kas ļauj jums spēlēt ar masīvu indeksa operatoru.
2. saraksts masīva indeksa operatoram Java (ArrayIndexOp.java)
klase ArrayIndexOp {public static void main (String [] args) {int [] pakāpes = {89, 90, 68, 73, 79}; System.out.println (pakāpes [1]); pakāpes [1] = 91; System.out.println (pakāpes [1]); int indekss = 4; System.out.println (pakāpes [rādītājs]); System.out.println (pakāpes ['C' - 'A']); // System.out.println (pakāpes [1D]); }}
2. saraksts ir nedaudz interesantāks nekā 1. saraksts. Pēc piecu elementu, viendimensionāla veselu skaitļu masīva izveidošanas (izmantojot masīva inicializatoru) un masīva atsauces piešķiršanu pakāpes
, galvenais ()
iegūst piekļuvi dažādiem elementiem. Īpaši interesē divi priekšmeti:
- Masīva indeksa operatora indeksam galu galā jābūt 32 bitu veselam skaitlim (0 vai pozitīva vērtība). Varat norādīt vesela skaitļa mainīgā nosaukumu (piemēram,
indekss
), kas satur indeksa vērtību kā indeksu. - Varat norādīt aprēķinu, kurā iekļauti burtu literāļi. (Vēlāk šajā apmācībā es iepazīstināšu ar veida pārveidošanu, un jūs uzzināsiet, kāpēc
“C” - “A”
rada veselu skaitli (2), kas kalpo kā derīgs indekss.)
Pēdējais piemērs, kas iet garām 1D
kā indekss masīva indeksa operatoram tiek komentēts, jo tas netiks apkopots. Ja noņemat komentāru no rindas un mēģināt sastādīt 2. sarakstu, tiks parādīts kļūdas ziņojums par nesaderīgiem veidiem: "iespējams zaudējumu pārveidojums no dubultā
uz int.
."
Apkopot 2. sarakstu (javac ArrayIndexOp.java
) un palaidiet lietojumprogrammu (java ArrayIndexOp
). Jums jāievēro šāda izeja:
90 91 79 68
Masīva indeksa operators un daudzdimensionāli masīvi
Šo operatoru varat izmantot ar daudzdimensionāliem masīviem. Piemēram, pieņemot divdimensiju izmaksas
masīvs, izmaksas [0] [1]
piekļūst pirmajai rindai piešķirtajam elementam (izmantojot [0]
) un otro kolonnu (via [1]
).
Uzdevumu operatori
The norīkojuma operators (=
) piešķir izteiksmes vērtību mainīgajam (piemēram, i = 6;
), ieskaitot masīva elementu (piemēram, x [0] = 15;
). Izteiksmei un mainīgajam jābūt uzdevums ir saderīgs, kas nozīmē, ka viņu veidiem ir jāpiekrīt. Piemēram, vesela skaitļa mainīgajam nevar piešķirt virknes literālu. Es vairāk par to paskaidrošu, kad mēs apspriedīsim veida pārveidojumus.
Savienojuma piešķiršanas operatori (+=
, -=
, *=
, /=
, %=
, &=
, |=
, ^=
, <<=
, >>=
, >>>=
) novērtēt izteicienus un vienā posmā piešķirt rezultātus mainīgajiem. Katrai izteiksmei un mainīgajam jābūt saderīgam ar piešķiršanu. Katrs operators ir noderīgs saīsne. Piemēram, tā vietā, lai precizētu x = x + 3;
, varat norādīt īsāko un līdzvērtīgo x + = 3;
.
Īsāk sakiet!
Tā vietā, lai precizētu x = x + 1;
vai x = x - 1;
, jūs varētu norādīt īsāku x + = 1;
vai x - = 1;
. Jūs varētu ietaupīt pat vairāk taustiņsitienus, norādot īsākos x ++;
vai x--;
.