Sunteți pe pagina 1din 43

Limbaje de programare III

Suport de curs
prof.univ.dr.Mariana Marinescu

4/20/2018 1
Cuvinte importante:
- tehnologia Java si componentele sale: masina virtuala; limbajul
Java propriu-zis; compilatorul Java; biblioteca de clase Java;
- implementarea firmei Sun a limbajului Java: Platforma J2SE (Java
2 Platform, Standard Edition);
- tipuri de programe implementate de Java: aplicatii Java, applet-
uri;
- etapele dezvoltarii unei aplicatii Java; structura unei aplicatii Java;
metoda main( );
- utilizarea claselor de obiecte din pachetele predefinite (pachete
API) Java; directiva import ; instructiunea package;
- elemente de baza ale limbajului Java: identificatori, variabile,
tipuri primitive de date; constante;
- citirea datelor de la tastatura si afisarea datelor pe ecran: metodele
print, println, readLine, read.

4/20/2018 2
Notiuni introductive
Istoric Java:
- proiectul Java a fost initiat inca din 1990 dar firma Sun Microsystems a
facut publica specificatia noului limbaj abia in 1995 la SunWorld in San Francisco;
parintele noului limbaj Java a fost James Gosling, cunoscut ca autor al editorului
emacs; numele initial al limbajului a fost Oak, numele unui copac care crestea in
fata biroului lui James Gosling; acest nume a fost abandonat ulterior si inlocuit cu
Java;
- specificatia noului limbaj Java a fost facuta publica, de catre firma Sun
Microsystems, in anul 1995 la SunWorld in Sun Francisco; in momentul lansarii
sale, Java a revolutionat Internetul, deoarece a fost gandit pentru a imbunatati
continutul paginilor web prin adaugarea unui aspect dinamic: animatie, multimedia
etc;
- incepand cu anul 1998, cand a aparut versiunea 2 a limbajului (Java 2
Platform), Java a fost extins, acoperind si alte directii de dezvoltare: programarea
aplicatiilor enterprise (aplicatii de tip server) precum si a celor adresate
dispozitivelor cu resurse limitate, cum ar fi telefoanele mobile, pager-e sau PDA-uri
(Personal Digital Assistant) (mici dispozitive de calcul, de dimensiuni putin mai mari
decat ale unui telefon mobil, cu facilitati de agenda si capabile sa execute aplicatii
intr-un mod relativ asemanator cu cel al unui PC).
4/20/2018 3
Lansarea versiuni 2 a limbajului Java a adaugat multe facilitati, dar limbajul a
pastrat si posibilitatile de a crea aplicatii standard, de tipul aplicatiilor in linie
comanda sau a aplicatiilor bazate pe GUI (Graphical User Interface).
Caracteristicile de baza ale limbajului Java
- Java este un limbaj simplu de folosit. Aceasta caracteristica poate fi
considerata ca o reactie directa la complexitatea considerabila a limbajului C/C++.
Au fost indepartate din Java aspectele cele mai derutante din C++ precum
supraincarcarea operatorilor, mostenirea multipla sau pointer-rii.
- Java este independent de arhitectura calculatorului pe care lucreaza si
foarte portabil. Compilatorul Java genereaza o secventa de instructiuni ale unei
masini virtuale Java. Executia aplicatiilor Java este interpretata. Singura parte din
mediul de executie Java (JRE) care trebuie portata de pe o arhitectura pe alta
cuprinde interpretorul Java si o parte din bibliotecile standard care depind de sistem.
In acest fel aplicatii Java compilate pe o arhitectura SPARC de exemplu, pot fi
rulate fara recompilare pe un sistem bazat pe procesoare Intel. De altfel, mediul de
executie Java (JRE) este scris in C ceea ce il face foarte portabil.
- Interpretorul Java este gandit sa lucreze pe masini mici (memorie mica
de ordinul sutelor de KB), precum ar fi procesoarele cu care sunt dotate aparatele
casnice si telefoanele mobile.

4/20/2018 4
- Limbajul Java este orientat obiect. Cu el se pot crea clase de obiecte si
instante ale acestora, se pot incapsula informatiile, se pot mosteni variabilele si
metodele de la o clasa la alta etc. Singura caracteristica care lipseste este mostenirea
multipla, dar pentru a suplini aceasta lipsa, Java ofera o facilitate mai simpla,
numita interfata, care permite definirea unui anumit comportament pentru o clasa de
obiecte, altul decat cel definit de clasa de baza. In Java orice element este un obiect,
in afara de datele primare. Din Java lipsesc functiile si variabilele globale.
- Limbajul Java este distribuit, avand implementate biblioteci pentru
lucrul in retea.
- Limbajul Java este un limbaj cu securitate ridicata.
- Java are inclus suport nativ pentru aplicatii care lucreaza cu mai multe
fire de executie (programare paralela si concurenta). Acest suport este independent
de sistemul de operare.

4/20/2018 5
Tehnologia Java si componentele sale
In tehnologia Java sunt cuprinse patru componente:
1. Masina virtuala, denumita JVM (Java Virtual Machine) care interpreteaza
fisierele cu extensia .class ce contine “bytecode”.
“Bytecode” reprezinta cod compilat care este procesat de un program, denumit
masina virtuala, si nu cod executabil care ruleaza pe masina reala ce dispune de un
procesor harwarde.
“Bytecode” este format din instructiuni generice care sunt convertite (transformate)
de masina virtuala in instructiuni specifice procesorului masinii reale. De aceea se
spune ca aplicatiile Java sunt independente de platforma (hardware si software).
Masina virtuala Java mai este denumita si interpretor Java.
2. Limbajul Java propriu-zis. Limbajul Java este orientat pe obiecte si se
aseamana din punct de vedere al sintaxei cu C++.
3. Un compilator care genereaza fisiere cu extensia .class. Compilatorul Java
traduce instructiunile scrise in limbajul Java (stocate in fisiere cu extensia .java) in
instructiuni generice “bytecode”(stocate in fisiere cu extensia .class) care sunt
“intelese” de masina virtuala.

4/20/2018 6
4. Biblioteca de clase Java, denumita si Java API. Aceasta biblioteca contine un
set de componente utile care pot fi reutilizate de programatori in diverse aplicatii
informatice.
Implementari ale limbajului Java
Cele mai importante implementari ale limbajului Java sunt realizate de firmele Sun
si IBM.
Microsoft a creat propria sa implementare Java, disponibila numai pe platforme
Windows.

4/20/2018 7
Implementarea firmei Sun a limbajului Java
Implementarea Java a firmei Sun este cea mai frecvent utilizata.
Firma Sun a grupat tehnologia Java in trei editii:
1. Java 2 Platform, Micro Edition (platforma J2ME) reprezinta mediul de
dezvoltare al aplicatiilor pentru dispozitive cu resurse mai reduse decat un calculator
PC obisnuit. Printre aceste dispozitive se pot enumera: carduri Smart, pager-e
telefoane mobile, anumite tipuri de televizoare, PDA-uri (Personal Digital
Assistant).
2. Java 2 Platform, Standard Edition (platforma J2SE) reprezinta mediul de
dezvoltare al aplicatiilor de tip “client-side” (care ruleaza pe PC-ul client).
3. Java 2 Platform, Enterprise Edition (platforma J2EE) reprezinta mediul de
dezvoltare al aplicatiilor de tip “server-side” (care ruleaza pe un server si pot fi
accesate de mii de clienti simultan); usureaza enorm crearea de aplicatii internet
industriale scalabile.
Obiectul de studiu pentru cursul nostru este platforma Java J2SE.

4/20/2018 8
Platforma J2SE (Java 2 Platform, Standard Edition)
Produsul informatic (software-ul) care implementeaza platforma J2SE si care este
folosit pentru dezvoltarea de aplicatii specifice acesteia este J2SDK (Java 2
Software Development Kit, Standard Edition) in diverse versiuni pe care le
scoate firma si care este livrat gratuit (este un soft liber).
Pentru a fi la curent cu ultimele versiuni ale produsului J2SDK se poate accesa
adresa de internet http://java.sun.com.
Produsul J2SDK include uneltele de creare a programelor Java (compilatorul si alte
unelte necesare pentru dezvoltare de programe) si unelte de executie ale acestora
(masina virtuala, biblioteca de clase Java API etc). Cele mai importante unelte
incluse in J2SDK sunt:
- javac - compilatorul Java;
- java - interpretorul Java;
- appletviewer - folosit pentru testarea applet-urilor (aplicatii care ruleaza
dintr-un navigator de internet).
Pachetul Java 2 SDK este un set de programe care ruleaza, din lina de comanda a
sistemului de operare, utilitare bazate pe text, care nu au nevoie de o interfata
grafica pentru utilizator.
4/20/2018 9
Produsul informatic J2RE (Java 2 Runtime Environment, Standard Edition)
este folosit numai cand se executa aplicatii scrise in Java. El este destinat celor care
doresc sa poata executa aplicatii Java, fara a avea nevoie de intreg mediul de
dezvoltare.
J2RE este un produs care poate fi instalat separat, dar si ca o componenta a J2SDK.
Mediul de programare Java si medii integrate IDE (Integrated
Development Environments).
Pachetul Java 2 SDK este destul de departe de instrumentele de programare moderne
denumite si medii integrate de dezvoltare de programe (IDE).
Folosind un mediu IDE, programatorului ii sunt puse la dispozitie toate elementele
de care are nevoie pentru a crea aplicatii Java profesionale: debugger-e pentru
executarea pas cu pas a aplicatiilor, modalitati de a vedea in orice moment ierarhia
de clase si metode existente in cadrul unui proiect, completarea automata a codului,
compilare incrementala (codul este compilat in timp ce este scris) etc.
Exista mai multe astfel de medii IDE care pot ingloba pachetul Java 2SDK cum ar
fi:Eclipse, Forte for Java, JBuilder, NetBeans IDE.

4/20/2018 10
Nota: Instrumentul de dezvoltare de programe folosit in acest curs este Java 2 SDK,
Standard Edition, v 6.16 realizat de catre firma Sun Microsystem (soft liber) iar ca
mediu IDE este folosit produsul NetBeans v 6.7.1 (soft liber).

Tipuri de programe implementate de Java


Cu ajutorul limbajului Java se pot dezvolta doua tipuri de programe:
1. Programe Java care se executa individual prin intermediul unui interpretor Java.
Acestea se incadreaza in programele “clasice” scrise in diverse limbaje de
programare, cum ar fi:C/C++, Pascal etc. Acest tip de programe Java sunt denumite
aplicatii.
2. Programe Java care se executa in interiorul unui navigator Internet, dintr-un
document HTML. Acest tip de programe Java sunt denumite applet-uri.
Nota: In acest curs se vor invata notiunile si conceptele fundamentale de
programare necesare pentru dezvoltarea de aplicatii Java.

4/20/2018 11
Etapele dezvoltarii unei aplicatii Java
1. Editarea setului de instructiuni de programare cu ajutorul unui editor de texte.
In acest fel este creat un fisier sursa, care are extensia .java.
2. Compilarea programului. Pentru aceasta operatie se lanseaza in executie un
program special, denumit compilator Java. Compilatorul analizeaza textul sursa al
programului din punct de vedere sintactic, semnaland eventualele erori. Daca
programul nu contine erori sintactice, compilatorul traduce acest program in codul
masina pentru masina virtuala Java (un fel de calculator intr-un alt calculator).
Rezultatul compilarii este unul sau mai multe fisiere de tip “bytecode”- o secventa
de instructiuni de asamblare pentru masina virtuala Java. Fisierul “bytecode” nu
depinde de masina gazda si de sistemul de operare pe care va fi executat programul.
Masina virtuala mai este cunoscuta si ca interpretor Java sau executor (runtime)
Java.
Extensia fisierului “bytecode” rezultat in urma compilarii are extensia .class.
3. Conversia (transformarea), de catre interpretorul Java, a instructiunilor
“bytecode” in instructiuni inteligibile masinii gazda care apoi sunt executate.
Conversia are loc la lansarea executiei si anume instructiune cu instructiune.
In acest mod este asigurata portabilitatea si independenta de platforma.Un
dezavantaj poate fi considerat timpul mai mare de executie.
4/20/2018 12
Scrierea
instructiunilor
programului-sursa
(.java)
Conversia
fiecarei
instructiuni Executia
Compilarea “bytecode” in fiecarei
Da Da
programului- Cu succes? instructiune Cu succes? instructiuni cu
sursa cu executabila pe ajutorul
ajutorul masina gazda cu interpretorului
compilatorului ajutorul Java (.class)
Java interpretorului
Java (.class)
Nu Nu

Modificarea
instructiunilor
programului

Procesul de compilare si executie a unei aplicatii Java

4/20/2018 13
Structura unei aplicatii Java
O aplicatie Java este compusa din una sau mai multe clase care interactioneaza
intre ele prin intermediul metodelor. In grupul de clase, care formeaza o aplicatie
Java, trebuie sa existe o clasa care sa contina o metoda statica avand numele main.
Atunci cand se executa o aplicatie Java, masina virtuala va cauta si invoca automat
metoda statica avand numele main.
Nota: Metoda main poate fi considerata ca fiind echivalentul Java a functiei main
din C/C++.
Cel mai simplu program Java (care nu face nimic) arata astfel:
class NuFacNimic
{
public static void main (String [ ] args)
{}
}
Nota: Tipul parametrilor metodei (functiei) main cat si tipul metodei, static void,
sunt obligatorii.
4/20/2018 14
Metodele folosite in programele Java reprezinta in mare masura echivalentul
functiilor sau procedurilor din alte limbaje de programare. O definitie completa a
conceptului de metoda va fi data intr-o lectie separata cand se va discuta despre
conceptele de clasa si obiect.
In aceasta lectie prezentam doar cateva notiuni elementare despre metode pentru a
putea scrie functii de genul celor din limbajul C/C++ pe care sa le folosim in
cateva programe simple.
O metoda se defineste prin:
- antetul metodei;
- corpul metodei.
Antetul metodei contine numele metodei, tipul valorii returnate de metoda si o
lista de parametri (eventual vida), fiecare avand un tip precizat, prin care metoda
comunica cu exteriorul ei, incadrata intre paranteze rotunde:
Corpul metodei este constituit din declaratii si instructiuni cara executa diferite
sarcini. Toate declaratiile si instructiunile din corpul functiei sunt incadrate intre
paranteze acolade.

4/20/2018 15
Sintaxa definirii unei metode este:
<tip_rezultat> nume_metoda (<lista_parametri>)
{ <corpul_functiei> }
Nota: Prin prefixarea metodelor cu ajutorul cuvintelor cheie public static se poate
spune ca metodele sunt aproape similare cu functiile din limbajul C. Aceasta tehnica
nu trebuie utilizata insa in mod abuziv.
Instructiunea return este utilizata pentru a intoarce o valoare catre codul apelant.
Sintaxa instructiunii return este:
return [<expresie>];
unde:
- <expresie> - specifica valoarea returnata de metoda; in anumite situatii pentru
iesirea fortata dintr-o metoda care are tipul void se foloseste instructiunea return fara
<expresie>.
Daca tipul metodei este void atunci nu se returneaza nici o valoare si deci
instructiunea return nu este necesara.
La apelul unei metode parametrii actuali (reali) sunt trecuti in parametrii formali
utilizand exclusiv transmiterea prin valoare.
4/20/2018 16
Nota: Java permite supraincarcarea (overloading) numelui metodelor. Aceasta
inseamna ca mai multe metode cu acelasi nume pot fi declarate in cadrul aceleiasi
clase atata timp cat lista de parametrii formali difera ca numar si tip.
Utilizarea claselor de obiecte din pachetele predefinite (pachete API)
Java
Pot exista unele operatii care sunt frecvent utilizate in cadrul unei aplicatii Java.
(cum ar fi: citirea datelor, scrierea datelor, extragerea radicalului, desenarea de
obiecte grafice etc) pentru care nu exista instructiuni specifice ale limbajului Java.
Din acest motiv, s-au construit pachete predefinite de clase de obiecte (pachete
API) (elaborate de firma proiectanta a mediul de programare folosit) care contin
colectii de clase de obiecte de utilitate generala grupate pe categorii.

4/20/2018 17
Mediul de programare J 2 SDK ofera peste 70 de pachete predefinite, printre care,
mai des utilizate sunt:
- java.lang care ofera clase fundamentale pentru limbajul Java: clasa
Integer, clasa Math, clasa System, clasa String etc;
- java.io care ofera modalitati de citire/scriere a datelor prin intermediul
fluxurilor de date, a fisierelor etc;
- java.util care contine clase pentru utilizarea colectiilor de date abstracte
de tip stiva si coada, pentru manevrarea datelor calendaristice si a timpului;
- java.util.jar pentru citirea/scrierea fisierelor in format jar (Java Archive);
- java.math care ofera clase specializate in calcul matematic;
- java.text care ofera clase pentru manevrarea textului, a datelor
calendaristice, a timpului si a mesajelor intr-o maniera independenta de limba
utilizata;
- java.net care pune la dispozitie clase pentru implementarea aplicatiilor
de retea.

4/20/2018 18
Directiva import pentru utilizarea claselor din pachetele API Java in propria
aplicatie.
Sa presupunem ca se doreste folosirea unei clase oarecare C dintr-un pachet P.
Atunci referirea la acea clasa in cadrul programului se face cu numele P.C, adica
plasand numele pachetului urmat de semnul punct (.) inaintea numelui clasei.
Utilizarea permanenta a numelui pachetului din care fac parte clasele poate crea
dificultati de scriere a programului. Pentru a evita acest lucru se foloseste directiva
import.
Sintaxa directivei import este:
import <nume_pachet>.<nume_clasa>;
sau
import <nume_pachet>.*;
Pentru a doua forma a directivei, toate clasele din pachet vor putea fi abreviate cu
numele lor neprecedat de numele pachetului.
Directivele import trebuie sa apara inainte de orice declarare a unei clase. Pachetul
java.lang este automat inclus in intregime. Acesta este motivul pentru care putem
folosi prescurtari de genul Integer.parseInt ()

4/20/2018 19
Crearea de pachete cu clase de obiecte proprii aplicatiei. Instructiunea
package
Daca dorim sa includem o clasa de obiecte intr-un pachet trebuie sa realizam
urmatoarele:
- sa scriem o instructiune package inaintea unei eventuale directive
import;
- apoi, sa stocam fisierul cu extensia .class ce contine clasa respectiva in
director care are numele pachetului.
Sintaxa instructiunii package este:
package <nume_pachet>;
Observatie: In cazul folosirii IDE NetBeans, instructiunea package este inclusa
automat, atunci cand se creaza o noua aplicatie Java (proiect Java).

4/20/2018 20
Elemente de baza ale limbajului Java
Setul de caractere folosit de limbajul Java
Limbajul Java lucreaza in mod nativ folosind setul de caractere Unicode. Acesta este
un standard international care inlocuieste vechiul set de caractere ASCII. Vechiul
standard ASCII este insa un subset al setului Unicode, ceea ce inseamna ca vom
regasi caracterele ASCII cu exact aceleasi coduri ca si mai inainte. Java foloseste
setul Unicode in timpul executiei aplicatiilor dar si in timpul compilarii acestora.
La citirea fisierului sursa, compilatorul Java foloseste secventele escape Unicode.
Secventele escape sunt secvente de caractere ASCII care incep cu caracterul
backslash (\). Pentru secventele escape Unicode, al doilea caracter din secventa
trebuie sa fie caracterul u sau U. Dupa caracterul u sau U urmeaza o combinatie de
patru cifre hexazecimale care formeaza impreuna doi octeti de memorie reprezentand
un caracter Unicode.
De exemplu, cifrele de la 0 la 9 sunt reprezentate prin secvente escape Unicode de la
\u0030 la \u0039 si sunt interpretate ca cifre ISO-LATIN-1.
Spatiile albe folosite in programele Java sunt: caracterele blanc (spatiu), tab, return
(retur de linie), line-feed (linie noua) si return + line-feed.

4/20/2018 21
Anumite caractere sunt reprezentate prin secvente escape speciale:
\n = \u000a - linie noua; \b = \u0008 - backspace;
\t = \u0009 - tab; \r = \u000d - return;
\\ = \u005c - backslash; \” = \u0022 - ghilimele.
\’ = \u0027 - apostrof.
Identificatori
Identificatorii, intalniti si sub denumirea de nume simbolice, au rolul de a denumi
elemente ale programului Java: constante, variabile, clase metode etc.
Din punct de vedere sintactic, un identificator este constituit dintr-o succesiune
nelimitata de litere si cifre Unicode, primul caracter fiind obligatoriu o litera
(inclusiv ‘_’).
Limbajul Java este “case-sensitive”, adica face diferenta intre literele mici si literele
mari. De aceea, identificatorii sunt diferiti in functie daca sunt scrisi cu litere mici si
mari.

4/20/2018 22
Cuvintele-cheie (keywords) sunt identificatori speciali, cu inteles predefinit, care pot
fi utilizati numai in constructii sintactice in care sunt specificati. De exemplu: if,
while etc. Toate cuvintele-cheie se scriu numai cu litere mici.
Separatori
Separatorii au rolul de a separa unitatile sintactice:
- Ca separatori “generali” se utilizeaza caracterele albe: spatiu (‘ ‘), TAB
(‘\t’), sfarsit de linie (‘\n’) si comentariile.
- Separatorii specifici sun folositi, de exemplu, pentru a separa unele
constructii sintactice: variabilele sunt separate prin caracterul virgula (‘,’). Alti
separatori specifici sunt ( ) { } [ ] .
- Delimitatorii sunt folositi, de exemplu, pentru:
- a delimita sfarsitul unei instructiuni sau al unei declaratii -
caracterul punct si virgula (‘;’);
- a delimita o constanta de tip caracter - caracterul apostrof (‘);
- a delimita constantele sir de caractere(ghilimelele).

4/20/2018 23
Comentarii
Comentariile sunt texte care vor fi ignorate de compilator, dar au rolul de a explicita
si de a face mai lizibil pentru programator anumite secvente de program.
In Java exista trei tipuri de comentarii:
- o succesiune de caractere incadrata intre /* si */ ; aceste comentarii pot fi
formate din mai multe linii;
- o succesiune de caractere pe mai multe linii care tin de documentatie,
incadrate intre /** si */; textul dintre cele doua secvente este automat mutat in
documentatia aplicatiei de catre generatorul automat de documentatie (javadoc);
- o succesiune de caractere care incepe cu // si se termina la sfarsitul unei
singure linii.

4/20/2018 24
Variabile
Variabila este o zona temporara de stocare, rezidenta in memoria RAM, care are un
nume simbolic (identificator) si stocheaza un anumit tip de date. Ea poate fi
modificata pe parcursul executiei programului.
In ciuda denumirii, in Java exista variabile care isi pot modifica valoarea si variabile
care nu si-o pot modifica, numite variabile finale. Asupra variabilelor finale vom
reveni ulterior dupa intelegerea conceptelor de clasa de obiecte.
Pentru utilizarea unei variabile intr-un program Java trebuie ca aceasta sa fie
declarata. La declararea variabilei trebuie specificat numele simbolic al variabilei,
tipul acesteia si, eventual, o valoare initiala care se atribuie variabilei.

4/20/2018 25
Tipurile primitive de date definite in Java
Un tip de date defineste multimea de valori pe care variabila poate sa le stocheze,
modul de reprezentare a acestora in memorie, ca si setul de operatii pe care
programul poate sa le realizeze cu aceste date.
In limbajul Java a fost exact definita modalitatea de reprezentare a tipurilor
primitive de date in memorie. In acest fel, variabilele Java devin independente de
platforma hardware si software pe care lucreaza.
De asemenea, Java defineste o valoare implicita pentru fiecare tip de date, in cazul
in care variabila de un anumit tip nu a primit nici o valoare de la utilizator. Este o
practica buna insa aceea ca programele sa nu depinda niciodata de aceste initializari
implicite. Regula ar fi deci urmatoarea: nici o declararie fara initializare.
Limbajul Java accepta urmatoarele tipuri de baza: byte, short, int, long, float,
double, char, boolean, void.

4/20/2018 26
Tabelul de mai jos prezinta o descrie generala a tipurilor primitive de date utilizate
de Java.

Tip Valori Reprezentare in memorie

byte [-128, 127] Intreg pe 1 byte

short [-32768, 32767] Intreg pe 2 bytes

int [2.147.483.648, 2.147.483.648] Intreg pe 4 bytes

long [-263, 263 -1] Intreg pe 8 bytes

float 6 cifre semnificative [10-46, 1038] Virgula mobila pe 4 bytes

double 15 cifre semnificative [10-324, 10308] Virgula mobila pe 8 bytes

char coduri Unicod Pe 2 byte

boolean false sau true Pe un bit

4/20/2018 27
Tipul boolean este folosit pentru memorarea unei valori de adevar sau fals. In Java
aceste doua valori le vom nota prin constantele (literali) true si respectiv false.
Orice variabila booleana nou creata primeste automat valoarea implicita false.
Tipul char este folosit pentru a reprezenta caractere de tip Unicode.
Orice variabila de tip caracter nou creata primeste automat ca valoare implicita
caracterul null al codului Unicode, “\u0000’.
Tipurile de date intregi sunt folosite pentru memorarea unor valori intregi cu
semn. Conventia folosita de Java pentru valorile intregi cu semn este reprezentarea
in complement fata de doi. Tipurile de date intregi sunt: byte, short, int, long.
Orice variabila de tip intreg (byte, short, int si long) nou creata primeste automat
valoarea implicita 0.
Tipurile de date reale sunt folosite pentru memorarea unor valori reale sub forma
de mantisa si caracteristica. Tipurile de date reale sunt: float si double.
Valoarea implicita pentru variabilele de tip float este 0.0f, iar pentru variabilele de
tip double este 0.0d.

4/20/2018 28
In Java sunt definite cateva valori reale speciale:
1. Valoarea NaN (Not a Number) se obtine atunci cand se efectueaza o operatie a
carei rezultat nu este definit, de exemplu 0.0 / 0.0.
2. Valori folosite pe post de infinit pozitiv si negativ. Aceste valori pot rezulta in
urma unor calcule.
Valorile descrise la pct. 1 si 2 sunt definite sub forma de constante si in ierarhia de
clase predefinite Java, si anume in clasa java.lang.Float si respectiv in clasa
java.lang.Double. Numele constantelor este: NaN, POSITIVE_INFINITY,
NEGATIVE_INFINITY.
Pentru tipurile intregi si intregi lungi, precum si pentru tipurile flotante exista
definite clase in ierarhia de clase predefinite Java si anume:
- java.lang.Integer - pentru tipul int;
- java.lang.Long - pentru tipul long;
- java.lang.Float - pentru tipul float;
- java.lang.Double - pentru tipul double.

4/20/2018 29
In fiecare dintre clase numerice prezentate sunt definite doua constante care
reprezinta valorile minime si maxime pentru tipurile respective. Aceste doua
constante se numesc in mod uniform MIN_VALUE si MAX_VALUE.
Tipul void
Tipul void este un tip special, pentru care multimea valorilor este vida. Acest tip se
utilizeaza cand este necesar sa se specifice absenta oricarei valori. De exemplu:
pentru tipul de data a metodelor care nu intorc nici un rezultat, cum a fost cazul
metodei main ().
Constante
O constanata este folosita pentru a exprima in program o valoare pe care o poate lua
tipurile primitive de date si tipul sir de caractere.
Constantele intregi pot fi reprezentate in baza 10, 16 sau 8. Constantele intregi pot
fi intregi normale sau lungi. Constantele lungi se recunosc prin faptul ca se termina
cu sufixul l sau L.
Pentru a reprezenta o constanta intreaga in baza 16 trebuie sa se adauge prefixul 0x
sau 0X in fata numarului.
Pentru a reprezenta o constanta intreaga in baza 8 trebuie sa se adauge prefixul 0
(cifra zero) in fata numarului.
4/20/2018 30
Constantele reale care se pot reprezenta in memoria calculatorului sunt numere
rationale din intervalele specificate la tipurile float si double. Constantele reale pot
fi specificate in notatia obisnuita sau in format stiintific.
Sufixul care indica tipul float poate fi f sau F iar sufixul care indica tipul double
poate fi d sau D. Daca nu este specificat nici un sufix, valoarea implicita este de tip
double.
Constantele de tip caracter sunt utilizate pentru a reprezenta caracterele Unicode.
Reprezentarea se face fie folosind o litera sau o cifra, fie o secventa escape.
Caracterele care au reprezentare grafica pot fi scrise intre apostroafe. Pentru cele
care nu au reprezentare grafica, se folosesc secventele escape sau secventele
escape predefinite prezentate deja. Intern, Java interpreteaza constantele de tip
caracter ca pe un numar (codul Unicode al caracterului respectiv). Ulterior,
functiile de scriere vor transforma acest numar in caracterul corespunzator.

4/20/2018 31
Constantele de tip sir de caractere sunt cuprinse intre ghilimele. Caracterele care
formeaza sirul de caractere pot fi caractere grafice sau secvente escape ca cele
prezentate la constantele de tip caracter. Daca se doreste introducerea de caractere
terminatoare de linie intr-un sir de caractere, atunci se foloseste secventa escape \n in
sirul de caractere respectiv.
Observatie: Un sir de caractere este, de fapt, o instanta a clasei de obiecte String
declarata standard in pachetul java.lang. Vom reveni asupra sirurilor de caractere
intr-o lectie separata.

4/20/2018 32
Sintaxa folosita pentru declararea de variabile este:
<tip> <nume_v1> [= <expresie>] [, <nume_v2> [= <expresie2>] … ];
unde:
- <tip> - specifica tipul de data al variabilelor;
- <nume_v1>, <nume_v2>, … - specifica numele simbolic al variabilelor care se
declara (adica, identificatorii);
- <expresie1>, <expresie2>, … - specifica o expresie de initializare; expresia trebuie
sa fie evaluabila in momentul declararii; sunt optionale si sunt folosite pentru a
atribui unor variabile anumite valori initiale.
Nota: Se pot declara simultan mai multe variabile de acelasi tip, separand numele
lor prin virgula.
O variabila trebuie sa fie declarata imediat inainte de a fi folosita. Locul unde este
declarata o variabila determina domeniul de vizibilitate si semnificatia ei.
Limbjul Java permite si definirea de constante. Modul cum se face definirea
constantelor va fi prezentata intr-o lectie separata destinata descrieri atributelor
statice.

4/20/2018 33
Exemple de declaratii de variabile ce pot fi folosite intr-un program:
int a, b=7, c=8;
char g;
float x=b*5.6, y;
Citirea datelor de la tastatura si afisarea datelor pe ecran
In limbajul Java nu exista instructiuni specializate pentru citirea/scrierea datelor.
Aceste operatii se realizeaza prin intermediul unor metode existente in pachetele
API ale limbajului. Intrarea si iesirea in Java se realizeaza cu ajutorul claselor de
obiecte din pachetul predefinit java.io. Orice program care foloseste rutinele de
intrare/iesire trebuie sa cuprinda instructiunea:
import java.io.*
Conceptul fundamental in operatiile de intrare/iesire in limbajul Java este fluxul de
intrare/iesire (stream).
Daca stream-ul este de intrare, succesiunea de biti “curge” dinspre exterior (in acest
caz, de la tastatura) catre memoria calculatorului.
Daca stream-ul este de iesire, secventa de biti “curge” dinspre memoria
calculatorului catre exterior (in acest caz, catre ecran).
4/20/2018 34
Java ofera trei fluxuri predefinite pentru operatii I/O standard:
- System.in pentru intrarea standard de la tastatura;
- System.out pentru iesirea standard la ecranul calculatorului;
- System.err pentru fluxul de erori.
Pentru afisarea datelor la ecranul calculatorului se folosesc metodele print si
println. Spre deosebire de C/C++ care dispun de un numar foarte mare de optiuni
de formatare, afisarea in Java se face exclusiv prin concatenare de String-uri fara
nici o optiune de formatare.
Observatie: String-urile sunt obiecte Java care descriu sirurile de caractere si le vom
studia separat intr-o lectie viitoare. Sa retinem ca prin concatenarea a doua siruri se
obtine un nou sir de caractere care uneste cele doua siruri initiale. Operatorul de
concatenare a doua siruri de caractere folosit de Java este semnul + (plus).
Sintaxa folosita la apelul metodei print este:
System.out.print (<expresie>); unde:
- <expresie> - este numele unei variabile de un tip de data sau este o expresie care
foloseste operatorul de concatenare pentru siruri de caractere; daca nu toti operanzii
din expresie sunt siruri de caractere, ci alte tipuri primitive de date atunci Java face
o conversie temporara la tipul String.
4/20/2018 35
Efectul apelului metodei print este acela ca se realizeaza afisarea la ecran a
variabilei data ca parametru si nu se face salt la o linie noua.
Sintaxa folosita la apelul metodei println este:
System.out.println (<expresie>); unde:
- <expresie> - este numele unei variabile de un tip de data sau este o expresie care
foloseste operatorul de concatenare pentru siruri de caractere.
Efectul apelului metodei println este acela ca se realizeaza afisarea la ecran a
variabilei data ca parametru si se face salt la o linie noua.
Metoda println se poate apela si fara parametrii, adica in forma:
System.out.println( );
caz in care se face numai un salt la o linie noua fara sa se afiseze nimic.
Se poate folosi urmatoarea combinatie de apeluri care este echivalenta cu println( ):
System.out.print(<expresie>);
System.out.println();

4/20/2018 36
Pentru citirea datelor de la tastatura procedura este mai anevoioasa. Acest lucru se
datoreaza in primul rand faptului ca programele java nu sunt concepute pentru a citi
de la tastatura. In majoritatea cazurilor, programele Java isi preiau datele dintr-o
interfata grafica, din forme HTML sau din fisiere.
Citirea datelor de la tastatura se realizeaza cu metoda readLine. Insa pentru citire
trebuie sa construim un obiect BufferedReader dintr-un obiect InputStreamReader
care la randul sau este construit din System.in. Descrierea detaliata a acestor obiecte
o vom face intr-o lectie viitoare dupa intelegerea conceptelor de clase si obiecte.
Sintaxa folosita la apelul metodei readLine este:
<nume_obiect>.readLine(); unde:
- <nume_obiect> - reprezinta o variabila de tipul obiectului BufferedReader.
Efectul apelului metodei readLine este urmatorul: preia caracterele de la intrare
pana cand intalneste un terminator de linie sau sfarsit de fisier. Metoda returneaza
caracterele citite (din care extrage terminatorul de linie ) ca sir de caractere de tip
String. Daca primul caracter citit este terminatorul de linie, atunci metoda readLine
returneaza valoarea null.

4/20/2018 37
Urmatorul program (Afiseaza.java) ilustreaza modul de folosire al metodelor println
si readLine pentru afisarea si respectiv citirea unor siruri de caractere:

/**
* Afiseaza.java
*/
package afiseaza;
import java.io.*;
public class Afiseaza
{
public static void main(String[] args) throws IOException
{
System.out.println("Bun venit in universul Java");
System.out.println ("Introduceti un numar ");
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
int a = Integer.parseInt(s);
System.out.println(s);
}
}
4/20/2018 38
Nota: Metoda Integer.parseInt(s) aplicata sirului de caractere de la intrare realizeaza
conversia sirului de caractere s intr-un numar intreg de tip int. Pentru a converti un
sir de caractere la un numar de tip double se poate folosi metoda
Double.parseDouble(), iar pentru a converti un sir de caractere la un numar de tip
float se poate folosi metoda Float.parseFloat(). Asupra acestor metode vom reveni
in lectia despre siruri de caractere.
Observatie: Clauza throws utilizata in antetul metodei main este folosita pentru a
specifica toate exceptiile (erorile) de I/O care nu sunt tratate in cadrul metodei main
ci de catre alte metode din clasele java.io.*. Modurile de tratare a exceptiilor
(erorilor) vor fi descrise intr-o lectie viitoare.

4/20/2018 39
Metoda System.in.read() citeste urmatorul caracter din fluxul de intrare (care poate
contine mai multe caractere citite de la tastatura) si returneaza caracterul citit ca un
intreg (cuprins intre 0 si 65535) sau -1 daca s-a intalnit terminatorul de linie
(caracterul ‘\r’- carriage return).
Programul urmator (Afiseaza1.java) ilustreaza modul de folosire a acestei metode:
import java.io.*;
public class Afiseaza1
{
public static void main(String[] args) throws IOException
{ char b;
System.out.println("Bun venit in universul Java");
b = (char) System.in.read();
System.out.println(b);
}
}

4/20/2018 40
Interfata IDE NetBeans
Navigatorul proiectului Fereastra de afisare a datelor de iesire si Fereastra de editare a codului
de introducere a datelor de la tastatura

4/20/2018 41
Crearea unui proiect Java folosind IDE NetBeans

Pasul 1 - Alegerea tipului de proiect java

4/20/2018 42
Pasul 2 - Stabilirea numelui si a locatiei proiectului

4/20/2018 43

S-ar putea să vă placă și