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 rezer­vate.

Literali

Literalii pot fi de următoarele tipuri:

Intregi

Sunt acceptate 3 baze de numeraţie : baza 10, baza 16 (încep cu car­acterele 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 co­dului 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 car­actere 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 oper­atorul + , 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: evalu­area 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






FreeWM.ru - WebMoney нахаляву!
Ошибка, внешние коннекты на хостинге отключены, обратитесь к хостеру или попробуйте CURL.