Structura lexicală a limbajului Java
Setul de caractere
Limbajului Java lucrează în mod nativ folosind setul de caractere Unicode. Acesta este un standard internaţional care înlocuieşte vechiul set de caractere ASCII şi care foloseşte pentru reprezentarea caracterelor 2 octeţi, ceea ce înseamnă că se pot reprezenta 65536 de semne, spre deosebire de ASCII, unde era posibilă reprezentarea a doar 256 de caractere. Primele 256 caractere Unicode corespund celor ASCII, referirea la celelalte făcându-se prin \uxxxx, unde xxxx reprezintă codul caracterului.
O altă caracteristică a setului de caractere Unicode este faptul că întreg intervalul de reprezentare a simbolurilor este divizat în subintervale numite blocuri, câteva exemple de blocuri fiind: Basic Latin, Greek, Arabic, Gothic, Currency, Mathematical, Arrows, Musical, etc.
Mai jos sunt oferite câteva exemple de caractere Unicode.
• \u0030 - \u0039 : cifre ISO-Latin 0-9
• \u0660 - \u0669 : cifre arabic-indic 0-9
• \u03B1 - \u03C9 : simboluri greceşti a — ui
• \u2200 - \u22FF : simboluri matematice (V, 3,0, etc.)
• \u4e00 - \u9ff f : litere din alfabetul Han (Chinez, Japonez, Coreean)
Mai multe informaţii legate de reprezentarea Unicode pot fi obţinute la adresa ”http://www.unicode.org”.
Cuvinte cheie
Cuvintele rezervate în Java sunt, cu câteva excepţii, cele din C++ şi au fost enumerate în tabelul de mai jos. Acestea nu pot fi folosite ca nume de clase, interfeţe, variabile sau metode. true, false, null nu sunt cuvinte cheie, dar nu pot fi nici ele folosite ca nume în aplicaţii. Cuvintele marcate prin * sunt rezervate, dar nu sunt folosite.
|
abstract |
double |
int |
strictfp |
Incepând cu versiunea 1.5, mai există şi cuvântul cheie enum.
Identificatori
Sunt secvenţe nelimitate de litere şi cifre Unicode, începând cu o literă. După cum am mai spus, identificatorii nu au voie să fie identici cu cuvintele rezervate.
Literali
Literalii pot fi de următoarele tipuri:
Intregi
Sunt acceptate 3 baze de numeraţie : baza 10, baza 16 (încep cu caracterele 0x) şi baza 8 (încep cu cifra 0) şi pot fi de două tipuri:
– normali - se reprezintă pe 4 octeţi (32 biţi)
– lungi - se reprezintă pe 8 octeţi (64 biţi) şi se termină cu caracterul L (sau l).
Flotanţi
Pentru ca un literal să fie considerat flotant el trebuie să aibă cel puţin o zecimală după virgulă, să fie în notaţie exponenţială sau să aibă sufixul F sau f pentru valorile normale - reprezentate pe 32 biţi, respectiv D sau d pentru valorile duble - reprezentate pe 64 biţi. Exemple: 1.0, 2e2, 3f, 4D.
Logici
Sunt reprezentaţi de true - valoarea logică de adevăr, respectiv false - valoarea logică de fals.
Atenţie
Spre deosebire de C++, literalii întregi 1 şi 0 nu mai au semnificaţia de adevărat, respectiv fals.
Caracter
Un literal de tip caracter este utilizat pentru a exprima caracterele codului Unicode. Reprezentarea se face fie folosind o literă, fie o secvenţă escape scrisă între apostrofuri. Secvenţele escape permit specificarea caracterelor care nu au reprezentare grafică şi reprezentarea unor caractere speciale precum backslash, apostrof, etc. Secvenţele escape pre-definite în Java sunt:
– ’ \b’ : Backspace (BS)
– ’ \t’ : Tab orizontal (HT)
– ’ \n’ : Linie nouă (LF)
– ’\f : Pagină nouă (FF)
– ’ \r’ : Inceput de rând (CR)
– ’\"’ : Ghilimele
– ’ \’’ : Apostrof
– ’ \\’ : Backslash
Siruri de caractere
Un literal şir de caractere este format din zero sau mai multe caractere între ghilimele. Caracterele care formează şirul pot fi caractere grafice sau secvenţe escape.
Dacă şirul este prea lung el poate fi scris ca o concatenare de subşiruri de dimensiune mai mică, concatenarea şirurilor realizându-se cu operatorul + , ca în exemplul: "Ana " + " are " + " mere ". Sirul vid este "".
După cum vom vedea, orice şir este de fapt o instanţă a clasei String, definită în pachetul java.lang.
Separatori
Un separator este un caracter care indică sfârşitul unei unităţi lexicale şi ınceputul alteia. In Java separatorii sunt următorii: ( ) [];,.. Instrucţiunile unui program se separă cu punct şi virgulă.
Operatori
Operatorii Java sunt, cu mici deosebiri, cei din C++:
• atribuirea: =
• operatori matematici: +, -, *, /, %, ++, — .
Este permisă notaţia prescurtată de forma lval op= rval: x += 2 n -= 3
Există operatori pentru autoincrementare şi autodecrementare (post şi pre): x++, ++x, n–, –n
Evaluarea expresiilor logice se face prin metoda scurtcircuitului: evaluarea se opreşte în momentul în care valoarea de adevăr a expresiei este sigur determinată.
• operatori logici: &&(and), ||(or), !(not)
• operatori relaţionali: <, <=, >, <=, ==, ! =
• operatori pe biţi: &(and), | (or), ^ (xor), ~ (not)
• operatori de translaţie: <<, >>, >>> (shift la dreapta fără semn)
• operatorul if-else: expresie-logica ? val-true : val-f alse
• operatorul , (virgulă) folosit pentru evaluarea secvenţială a operaţiilor: int x=0, y=1, z=2;
• operatorul + pentru concatenarea şirurilor:
String s1="Ana";
String s2="mere";
int x=10;
System.out.println(s1 + " are " + x + " " + s2);
• operatori pentru conversii (cast) : (tip-de-data)
int a = (int)’a’;
char c = (char)96;
int i = 200;
long l = (long)i; //widening conversion
long l2 = (long)200;
int i2 = (int)l2; //narrowing conversion
Comentarii
In Java există trei feluri de comentarii:
• Comentarii pe mai multe linii, închise între /* şi */.
• Comentarii pe mai multe linii care ţin de documentaţie, închise între /** şi */. Textul dintre cele două secvenţe este automat mutat în documentaţia aplicaţiei de către generatorul automat de documentaţie javadoc.
• Comentarii pe o singură linie, care incep cu //. Observaţii:
• Nu putem scrie comentarii în interiorul altor comentarii.
• Nu putem introduce comentarii în interiorul literalilor caracter sau şir de caractere.
• Secvenţele /* şi */ pot să apară pe o linie după secvenţa // dar îşi pierd semnificaţia. La fel se întamplă cu secvenţa // în comentarii care incep cu /* sau */.
Related Posts:
Comments
Leave a Reply