Sunteți pe pagina 1din 9

TEMA 1

1 Generaliti Limbajul de programare Java are urmtoarele caracteristici:


Simplu-Orientat pe obiect-Distribuit-Fire multiple de execuie Dinamic Neutru ar itectural-!ortabil-"nalta per#ormanta-$obust-Sigur

"n limbajul Java codul surs este scris in text simplu% #olosind #i&iere cu extensia .java' (ceste #isiere sursa sunt compilate in #isiere cu extensia 'class #olosind compailerul javac' Fi&ierele 'class nu conin cod executabil de procesorul ma&inii ci un cod de octei ) bytecode) care este *neles de ma&ina Java)Java Virtual Machine+ ,-!rogram'java---compilare---.,-!rogram'class---.'J/,----,a&in 0indo1s sau Linux 'Java este portabil pentru c sursa este independent de pla#orm% ea #iind destinat unei ma&ini Java% care nu di#er ca #uncionalitate indi#erent de sistemul de operare pe care a #ost instalat'

2 Plat or!a Java Plat or!a Java O plat#orma este un mediu ard1are si so#t1are *n care se executa o aplicatie' De exemplu: 0indo1s% Linux% Solaris% ,(2 OS' !lat#orma Java este numai o plat#orma so#t1are care se executa pe alte plat#orme ard1are !lat#orma Java are doua componente: ,asina virtuala Java -Java Virtual Machine"JVM "nter#ata de programare -Java A##lication Pro$ra!!in$ %nter ace &AP%) J/, este ba3a plat#ormei Java plat#orm care se instalea3a pe di#erite plat#orme ard' (!"-ul este colectia de componente so#t1are care sunt gata de3voltate si care o#era multe capabilitati utile' 'tructura unui #ro$ra! Java Fi4ierul care con5ine cod surs Java este cosiderat o unitate de compilare' O ast#el de unitate de compilare cuprinde un set de clase &i opional un pac et care grupea3 clasele care au legtur *ntre ele' 2lasele conin date &i metode care speci#ic starea &i comportamentul obiectelor din program'

!rogramele Java sunt de dou #eluri: 6A#licaii Java standalone )independente+ &i a##leturi care sunt programe Java care se execut *n bro1ser )"7% ,o33ila'''+ 2ompilatorul translatea3 codul surs Java in cod octei )b-tecode+ care este *neles de J/, &i deci independent de pla#orm' 2Odul obiect )b-tecode+ pentru #iecare clas este pladsat *ntr-un #i&ier separat ast#el *nc8t s poat #i gsit u&or la execuie )runtime+' E(e!#lu de a#licaie ,ai jos se a#l codul aplicaiei banale 9ello1orld care a#i&ea3 un mesaj la consol: public class 9ello0orld : ;; args<=> is #irst argument ;; args<?> t e second public static void main)String args<>+ : S-stem'out'println)@9ello 0orld@+4 A A Dac am compilat clasa 9ello0orld vom #olosi la linia de comand java 9ello1orld pentru a speci#ica sistemului de execuie s caute *n #iierul class corespun3tor metoda cu semntura public static void main)String args<>+4 ,etoda !ain se va a#la totdeauna in una din clasele care #ormea3 aplicaia'' De la aceast metod se porne&te practic execuia programuli Java'

) *olo+irea ar$u!entelor de la linia de co!anda O aplicatie Java poate primi oric8te argumente de la linia de comanda *n momentul lansarii ei' (ceste argumente sunt utile pentru a permite utili3atorului sa speci#ice diverse optiuni legate de #unctionarea aplicatiei sau sa #urni3e3e anumite date initiale programului' (tentie : !rogramele care #olosesc argumente de la linia de comanda nu sunt ?==B pure Java deoarece unele sisteme de operare cum ar #i ,ac OS nu au *n mod normal linie de comanda'(rgumentele de la linia de comanda sunt introduse la lansarea unei aplicatii% #iind speci#icate dupa numele aplicatiei si separate prin spatiu' De exemplu% sa presupunem ca aplicatia

Sort ordonea3a lexicogra#ic liniile unui #isier si primeste ca argument numele #isierului pe care sa *l sorte3e' !entru a ordona #isierul@persoane'txt@ lansarea aplicatiei se va #ace ast#el: java Sort persoane'txt (sadar% #ormatul general pentru lansarea unei aplicatii care primeste argumente de la linia de comanda este: java ,u!eA#licatie -ar$1 ar$2 . . . ar$n. "n ca3ul *n care sunt mai multe% argumentele trebuie separate prin spatii iar daca unul dintre argumente contine spatii% atunci el trebuie pus *ntre g ilimele' 7vident% o aplicatie poate sa nu primeasca nici un argument sau poate sa ignore argumentele primite de la linia de comanda' "n momentul lansarii unei aplicatii interpretorul parcurge linia de comanda cu care a #ost lansata aplicatia si% *n ca3ul *n care exista% transmite aplicatiei argumentele speci#icate sub #orma unui vector de siruri' (cesta este primit de aplicatie ca parametru al metodei main' $eamintim ca #ormatul metodei main din clasa principala este: public static void main ) 'trin$ ar$+-.+ /ectorul primit ca parametru de metoda main va conine toate argumentele transmise programului de la linia de comand' "n ca3ul apelului java Sort persoane'txt vectorul args va conine un singur element args<=>C@persoane'txt@' Numarul argumentelor primite de un program este dat deci de dimensiunea vectorului args si acesta poate #i a#lat prin intermediul atributului lengt al vectorilor: numar(rgumente C args'len$th 4 Spre deosebire ce 2;2DD vectorul primit de metoda main nu conine pe prima po3iie numele aplicaiei% *ntruc8t *n Java numele aplicatiei este numele clasei principale% adic a clasei *n care se gase&te metoda main' 7xemplu: a#isarea argumentelor primite la linia de comanda public class 7c o : public static void main )String<> args+ : #or )int i C =4 i E args'lengt 4 iDD+ S-stem'out'println)args<i>+4 A A Fn apel de genul java 7c o DrinG 9ot Java va produce urmatorul re3ultat: DrinG

9ot Java )aplicatia 7c o a primit H argumente+' Fna apel de genul java 7c o @DrinG 9ot Java@ va produce urmatorul re3ultat: DrinG 9ot Java )aplicatia 7c o a primit un singur argument+' (rgumente numerice la linia de comanda (rgumentele de la linia de comanda sunt primite sub #orma unui vector de siruri )obiecte de tip String+' "n ca3ul *n care unele dintre acestea repre3inta valori numerice ele vor trebui convertite din siruri *n numere' (cest lucru se reali3ea3a cu metode de tipul #ar+e/// a#late *n clasa corespun3atoare tipului *n care vrem sa #acem conversia: "nteger% Float% Double% etc' Sa consideram% de exemplu% ca aplicatia !o1er ridica un numar real la o putere *ntreaga% argumentele #iind trimise de la linia de comanda: java !o1er @?I'?@ @H@ ;;ridica ?I'? la puterea H 2onversia celor doua argumente *n numere se va #ace ast#el: double numar4 int putere4 numar C Double'parseDouble)args<=>+4 putere C "nteger'parse"nt)args<?>+4 ,etodele de tipul parseJJJ pot produce exceptii )erori+ de tipul NumberFormat7xception *n ca3ul *n care sirul primit ca parametru nu repre3inta un numar de tipul respectiv'

0 'tructura li!bajului 'etul de caractere Limbajului Java lucrea3a *n mod nativ #olosind setul de caractere Fnicode' (cesta este un standard international care *nlocuieste vec iul set de caractere (S2"" si care #oloseste pentru repre3entarea caracterelor I octeti% ceea ce *nseamna ca se pot repre3enta KLLHK de semne% spre deosebire de (S2""% unde era posibila repre3entarea a ILK de caractere' !rimele ILK caractere Fnicode corespund celor din (S2""% re#erirea la celelate #ac8ndu-se prin Muxxxx% unde xxxx repre3inta codul caracterului' 7x: Mu==H= - Mu==HN : ci#re "SO-Latin = - N

Mu=KK= - Mu=KKN : ci#re arabic-indic = - N MuOe== - MuN### : litere din al#abetul 9an )2 ine3% Japone3% 2oreean+ %denti icatorii Sunt secvene nelimitate de litere si ci#re Fnicode% *ncepand cu o liter' "denti#icatorii pot avea orice denumire dar nu au voie s #ie identici cu cuvintele re3ervate in Java)cuvintele c eie ale limbajului i#%return'''+' 1iteralii )constantele+ Literalii pot #i de urmatoarele tipuri literali 2ntre$i Sunt acceptate H ba3e de numeraie : ba3a ?=% ba3a ?K )*ncep cu caracterele =x+ si ba3a P )*ncep cu ci#ra =+ si pot #i de doua tipuri: normali% )se repre3 pe O octeti - HI biti+ lungi )P octeti - KO biti+ : se termina cu caracterul L )sau l+' literali lotanti !entru ca un literal sa #ie considerat #lotant el trebuie sa aiba cel putin o 3ecimal dupa virgul% s #ie *n notatie exponentiala sau s aib su#ixul F sau # pentru valorile normale )repre3' pe HI biti+% respectiv D sau d pentru valorile duble )repre3' pe KO biti+ literali lo$ici true : valoarea booleana de adevar #alse : valoarea booleana de #als literali caracter Fn literal de tip caracter este utili3at pentru a exprima caracterele codului Fnicode' $epre3entarea se #ace #ie #olosind o liter% #ie o secven escape scris *ntre apostro#uri' Secventele escape permit repre3entarea caracterelor care nu au repre3entare gra#ic si repre3entarea unor caractere speciale precum bacGslas % caracterul apostro#% etc' Secvene escape prede#inite *n Java: 2od Secventa 7scape 2aracter Mu===P 5Mb5 QacGspace)QS+ Mu===N 5Mt5 Rab ori3ontal )9R+ Mu===a 5Mn5 Linie noua - line#eed )LF+ Mu===c 5M#5 !agina noua - #orm#eed )FF+ Mu===d 5Mr5 "nceput de rand )2$+ Mu==II 5M@5 S ilimele Mu==IT 5M55 (postro# Mu==Lc 5MM5 QacGslas literali +iruri de caractere Fn literal sir de caractere este #ormat din 3ero sau mai multe caractere *ntre g ilimele' 2aracterele care #ormea3a sirul de caractere pot #i caractere gra#ice sau secvente escape ca cele de#inite la literalii caracter' Daca sirul este prea lung el poate #i scris ca o concatenare de subsiruri de dimensiune mai mica' 2oncatenarea sirurilor se #ace cu operatorul D )@(na @ D @ are @ D @ mere @+' Sirul vid este @@' Dupa cum vom vedea% orice sir este de #apt o instanta a clasei String% de#inita *n pac etul java'lang 'e#aratori Fn separator este un caracter care indica s#8rsitul unei unitati lexicale si *nceputul alteia' "n Java separatorii sunt urmatorii: ) + : A < > 4 % ' "nstructiunile unui program se separa cu punct si virgula 3#eratori atribuirea: C operatori matematici: D% -% U% ;% B 7ste permisa notatia prescurtata de #orma lval opC rval )ex: n DC I+ 7xista operatorii pentru autoincrementare si autodecrementare )post si pre+ ex: xDD% DDx% n--% --n Observatie: evaluarea expresiilor logice se #ace prin metoda scurtcircuitului )evaluarea se

opreste *n momentul *n care valoarea de adevar a expresiei este sigur determinata+ operatori logici: VV)and+% WW)or+% X)not+ operatori relationali: E% EC% .% EC% CC% XC operatori pe biti: V )and+% W)or+% Y)xor+% Z)not+ operatori de translatie EE% ..% ... )s i#t la dreapta #ara semn+ operatorul i#-else: expresie[logica \ val[pt[true : val[pt[#alse 4 operatorul % )virgula+ #olosit pentru evaluarea secventiala a operatiilor int xC=% -C?% 3CI4 operatorul D pentru concatenarea sirurilor: String sC@abcd@ int xC?==4 S-stem'out'println)s D @ - @ D x+4 operatori pentru conversii )cast+ : )tip[de[data+ int i C I==4 long l C )long+i4 ;;1idening conversion - conversie prin extensie long lI C )long+I==4 int iI C )int+lI4 ;;narro1ing conversion - conversie prin contractie 4o!entarii "n Java exista trei #eluri de comentarii: 2omentarii pe mai multe linii% *nc ise *ntre ;U si U;' 2omentarii pe mai multe linii care tin de documentatie% *nc ise *ntre ;UU si U;' Rextul dintre cele dou secvente este automat mutat *n documentatia aplicatiei de catre generatorul automat de documentatie javadoc' comentarii pe o singura linie care *ncep cu ;;' 3b+ervatii5 nu putem sa scriem comentarii *n interiorul altor comentarii' nu putem introduce comentarii *n interiorul literalilor caracter sau sir de caractere' secventele ;U &i U; pot s apar pe o linie dup secventa ;; dar *&i pierd semni#icaia4 la #el se *nt8mpl cu secvena ;; *n comentarii care *ncep cu ;U sau ;UU'

6 Ti#uri de date "n Java tipurile de date se *mpart *n doua categorii: ti#uri #ri!itive de date si tipuri re erin' Java porneste de la premi3a c @orice este un obiect@' (&adar tipurile de date ar trebui s #ie de #apt de#inite de clase si toate variabilele ar trebui s memore3e de #apt instane ale acestor clase )obiecte+' "n principiu acest lucru este adevarat% *ns% pentru usurina programrii% mai exist si a&a numitele ti#urile #ri!itive de date% care sunt cele u3uale : arit!etice *ntregi: b-te )? octet+% s ort )I+% int )O+% long )P+ reale: #loat )O octeti+% double )P+ caracter : c ar )I octeti+ logic : boolean )true si #alse+ /ectorii% clasele si inter#eele sunt ti#uri re erin' /aloarea unei variabile de acest tip este% *n contrast cu tipurile primitive% o re erin &adre+ de !e!orie) ctre valoarea sau multimea de valori repre3entata de variabila respectiv'

Variabile /ariabilele pot avea ca tip #ie un tip primitiv de dat% #ie o re#erin la un obiect' 7eclararea variabilelor Rip nume[variabila 4 %niiali8area variabilelor Rip nume[variabila C valoare 4 7eclararea con+tantelor #inal Rip nume[variabila 2onventia de notare a variabilelor in Java este data de urmatoarele criterii: variabilele inale )constante+ se scriu cu majuscule variabilele nor!ale se scriu ast#el : prima litera cu litera mica% daca numele variabilei este #ormat din mai multi atomi lexicali% atunci primele litere ale celorlalti atomi se scriu cu majuscule)camel case-scriere cu cocoa&e de cmil+% de exemplu: #inal double !" C H'?O4 int valoare C ?==4 long numar7lemente C ?IHOLKTPL4 String bautura,ea!re#erata C @apa@4 "n #uncie de locul *n care sunt declarate variabile se *mpart *n urmatoatele categorii: Variabile !e!bre )member variables sau #ields in eng'+% declarate *n interiorul unei clase% vi3ibile pentru toate metodele clasei respective &i pentru alte clase *n #unctie de nivelul lor de acces' Variabile locale% declarate *ntr-o metoda sau *ntr-un bloc de cod% vi3ibile doar *n metoda;blocul respectiv !arametri metodelor% vi3ibili doar *n metoda respectiv #olosii *n de#iniia metodei'

9 4ontrolul e(ecutiei %n+tructiunile Java #entru controlul e(ecutiei . Instructiuni de decizie if-else, switch-case Instructiuni de salt: for, while, do-while

Instructiuni pt. tratarea exceptiilor: try-catch-finally, throw (lte instructiuni brea:; continue; label5 ; return %n+tructiuni de deci8ie i#-else i &e(#<booleana) = >?...?>@ i &e(#<booleana) = >?...?>@ el+e = >?...?>@ s1itc -case s1itc )variabila+ : case val? : ;U ''' U; breaG4 case valI : ;U ''' U; breaG4 ;U'''U; de#ault : ;U'''U; A "nstructiuni de salt #or #or)initiali3are4 exp[booleana4 pas[iteratie+ 7x: #or)int iC=% jC?== 4 iE?== VV j.=4 iDD% j--+ :;U ''' ;UA Obs: at8t la initiali3are c8t si *n pasul de iteratie pot #i mai multe instructiuni despartite prin virgula' 1 ile 1 ile )exp[booleana+ : ;U'''U; A do-1 ile do : ;U'''U; A 1 ile )exp[booleana+ 4 "nstructiuni pentru tratarea exceptiilor tr--catc -#inall-% t ro1 )ve3i @Rratarea exceptiilor@+ (lte instructiuni breaG paraseste #ortat corpul iteratiei curente continue termina #ortat iteratia curenta return return <valoare>4 Rermina o metoda label: De#ineste o etic eta (tentie: "n Java nu exista goto' Se pot *nsa de#ini etic ete de #orma nume[etic eta:% #olosite *n expresii de genul: breaG nume[etic eata sau continue nume[etic eta 7xemplu: iC=4 etic eta: 1 ile )iE?=+ : S-stem'out'println)@iC@Di+4 jC=4

1 ile )jE?=+ : jDD4 i# )jCCL+ continue etic eta4 i# )jCCT+ breaG etic eta4 S-stem'out'println)@jC@Dj+4 A iDD4 A