În limbajul Java, expresia poate conține literali, variabile,
operatori, operanzi, funcții și paranteze și trebuie să poată fi evaluată
(calculată), astfel încât să se obțină o valoare.
Construirea expresiei se face pas cu pas, având în vedere că: - un literal sau o variabilă constituie o expresie; tipul și valoarea acestei expresii sunt cele ale literalului sau variabilei respective;
- un operator împreună cu operanzii lui
constituie o expresie.
- o expresie cuprinsă între paranteze constituie o nouă
expresie, a cărei valoare este identică cu cea a expresiei din interior;
- valoarea unei expresii poate fi folosită ca operand
într-o altă expresie.
Se observă că, procedând astfel, se pot construi expresii din ce în ce mai complicate. Utilizarea funcțiilor în expresii va fi discutată ulterior.
Mernționăm însă că și operatorii acționează tot ca niște funcții. De
exemplu, evaluarea expresiei alpha+3.765 este, de fapt,
calcularea unei funcții, care are ca argumente valorile variabilei alpha
și literalului 3.765 și are ca valoare suma acestora.
|
Fiecărui operator i se asociază o precedență, adică un nivel de prioritate în aplicarea operatorului respectiv. De exemplu, în expresia a+b*c operatorul * se va aplica înaintea operatorului +, deoarece are precedența superioară. În consecință, aceasta expresie se va calcula ca și când ar fi scrisă sub forma a+(b*c).
În limbajul Java, la stabilirea ordinii operațiilor se aplica următoarele reguli:
- operatorii unari se aplică înaintea celor binari;
- expresiile din interiorul parantezelor se evaluează înaintea
celor din exterior;
- dacă, într-o expresie, toți operatorii au același nivel de
precedență, ei se aplică de la stânga la dreapta;
- operanzii unui operator se evalueaza înainte de a se aplica
operatorul respectiv (deci operatorul se aplică întotdeauna asupra valorilor
operanzilor săi); dacă operația este binară, operandul din partea
stângă se evaluează înaintea celui din partea dreaptă;
- nivelul de precedență al operatorilor se stabilește
conform cu tabela de mai jos, în care:
Tabela de precedență a operatorilor în limbajul Java
|
++ -- ! ~ (<tip>) new |
|
|
|
|
|
|
|
|
|
|
|
|
|
Exemplu În programul de mai jos, a cărui sursă se găsește în fișierul EvExpresii.java, se calculează unele expresii cu numere întregi și se afișează rezultatele.
La executarea acestui program, se obțin pe ecran următoarele
rezultate:
Sa urmărim acum desfășurarea calculelor care au condus la
aceste rezultate. Recomandăm să urmăriți în același mod cum s-au calculat și
afisat celelalte expresii. Menționăm că: |