Curs Java
C1.Notiuni introductiveC1.1. Limbajul nativ al masiniiThe Fetch
and Execute CycleMachine language set de instructiuni (set secvente
binare) executate direct de catre CPU (Control Processing Unit)
Cache
CPU executa doar programele stocate in Main Memory RAM Random
Access Memory (contine addrese si date - instructiuni)CPU
CU - Control Unit
IR - Instruction Register
MDR Memory Data Register
PC Program Counter
MAR Memory Adress Register
ALU Arithmetic Logical Unit
ACC - Accumulator
RAM
00101110
.
.
.
.
.
.
Data BusAddress Bus
Etapele ciclului fetch-execute:1. PC pune adresa urmatoarei
instructiuni in MAR2. MAR pune adresa instructiunii pe Address
Bus3. Adress Bus gaseste instructiunea de la acea adresa de
memorie4. Instructiunea este pusa pe Data Bus5. Instructiunea este
pusa in MDR6. Instructiunea intra in IR7. IR decodeaza
instructiunea si o executa8. Se trece la urmatoarea
instructiune
C1.2. Limbajul virtual al masinii
IDE - Integrated Development Kit Eclipsse - NetBeansJDK - Java
Development Kit = JRE + javac compiler + development toolsJRE -
Java Runtime Environment = JIT + JVM + librariesJVM - Java Virtual
MachineJIT - Just In Time CompilerInterpreter JITJavac Compiler
Source code Bytecode Machine code (Virtual Machine Code) .java
.class
Compiler:- executa tot programul odata- transforma codul sursa
al aplicatiilor in bytecode
Interpreter:- executa programul instructiune cu instructiune-
transforma bytcode in cod masina
Pentru ca bytecode sa poata fi executat pe un anumit calculator
acesta trebuie sa aiba instalata o masina virtuala Java.Ca si
aplicatie un soft compiler este mai mare si greu de implementat
decat un soft interpreter.Caracteristici limbaj Java:- elimina
supraincarcarea operatorilor (posibilitatea operatorilor de a opera
asupra unor noi tipuri de date introduse de utilizator)- mostenire
simpla - o clasa poate avea doar o clasa parinte (superclasa)-
renuntarea la pointeri- alocarea automata a memoriei - eliminarea
pierderilor de memorie - garbage collector- neutralitate
ahitecturala - aplicatiile Java nu depind de arhitectura masinii pe
care ruleaza- portabilitate - obtinuta prin compilare si
interpretare- orientat pe obiecte
Platforme Java JDK:- J2SE (Standard Edition) - aplicatii
independente si appleturi- J2ME (Micro Edition) - aplicatii
dispozitive mobile- J2EE (Enterprise Edition) - aplicatii complexe,
servleturi
O subrutina reprezinta un set de instructiuni grupate sub un
nume si care efectueaza anumite sarcini.Un obiect in Java contine
date si subrutine.O clasa in Java este o colectie de obiecte cu
acelasi tip de date si care raspund la fel la mesaje (apeluri de
subrutine) de acelasi fel.Polimorfism obiecte diferite raspund
diferit la aceleasi mesaje.Definitia unei aplicatii o clasa
principala care contine subrutina Main.Clasele pot fi asadar
aplicatii daca contin aceasta subrutina, in caz contrar sunt doar
simple clase. Este recomandat ca numele aplicatiei sa fie acelasi
cu numele clasei principale.
Subrutina MainPublic static void main (string []
args){}Subrutina main poate apela alte subrutine din aceeasi clasa,
sau din clase diferite.
Clasa principala care defineste o aplicatiePublic class
numeAplicatie{Public static void main (string [] args){}}
Daca aplicatia contine mai multe fisiere cu clase diferite
acestea se vor salva avand extensia .javaCompilarea se face cu
compilatorul javac apelat pentru fisierul ce contine clasa
principala. Va rezulta un fisier cu extensia .class ce contine
bytecode.Interpretare/rularea aplicatiei se face cu interpretorul
java pentru fisierul bytecode.
EX: Save as: numeAplicatie.javaCompile: javac numeAplicatie.java
(rezulta fisier.class)Interpreter/Run: java numeAplicatie (fara
extensia class)
CLI Command Line InterfaceGUI Graphic User Interface
C1.3.Structura lexicala a limbajuluiSetul Unicode =
ASCII(256)+\uxxxx - este folosit de limbajul Javaxxxx-codul
caracterului
1.Cuvinte cheie cuvinte rezervateNu pot fi folosite ca nume de
clase, interfete, variabile sau metode.True, false, null nu sunt
cuvinte rezervate dar nici ele nu pot fi folosite ca si nume in
aplicatiipublicbyteifimport
privateintelsepackage
protectedshortforinterface
defaultlongwhileclass
finaldoubledoextends
abstractfloatswitchimplements
strictfpbooleancaseinstanceof
synchronizedcharbreakfinally
nativeconst*continuevoid
transientgoto*trynew
volatilethrowscatchthis
staticenumreturnsuper
2.Identificatori secvente litere si cifre incepand cu o
litera
3.Separatori: (){}[] ;,.
4.Literali valori constante de tip primitiv atribuite
variabilelor numerici, char, boolean siruri de charactere.
5.Comentarii: // pe o singura linie/* */pe mai multe linii /**
*/ pe mai multe linii, textul este mutat automat in documentatia
aplicatiei de catre generatorul de documentatie javadoc
6.OperatoriAtribuireasimpla: =compusa: += -= *= /= %= &= |=
^= == Ex: (x+=y x=x+y)Operatori matematici + - / * % ++ --Operatori
incrementare, decrementare++x preincrementarex++
postincrementare--y predecrementarey-- postdecrementareOperatori
logici &&(and), ||(or), !(not) pt booleanOperatori
relationali >Operatorul + pentru siruri de caractereOperatorul
conditionalexpresie booleana ? expresie1 : expresie2Ex: n=(x==y) ?
x : yOperatorul conversieEx: char a=(char)10; int 10 to
chardouble.Parsedouble(3.14); string 3.14 to double
C1.3.Tipuri de dateAspecte de baza ale programarii: date si
instructiuni.Pentru data exista conceptele de variabila si
tip.Pentru instructiuni exista conceptele de control si
metode(subrutine).
Variabila este o referinta la o adresa de memorie, iar data
continuta de aceasta adresa poate avea un tip. Alocarea memoriei in
Java se face automat odata cu declararea variabilei.Datele indicate
prin variabile pot fi de tip primitiv (numerice, char, boolean,
siruri de charactere) sau de tip referinta (vectori, clase,
interfete).Ex: int x=0; numele x reprezinta locul unde este stocata
valoarea 0 care este de tip integer.
Tipuri de date primitive- numericeinteger: byte(8biti),
short(16biti), int(32biti), long(64biti) - Lreal: float(32biti),
double(64biti) f,F,d,D,(x,y), (xey)- char(16biti): A charactere
Unicode- boolean: true, false- siruri de charactere: Ana, - sirul
vid
Toate tipurile primitive de date sunt clase.1 bit=o sau 1; 1
Byte= 8 biti;
C1.3.1.Variabile de tip primitivDeclararea variabilelor: tip
numeVariabila;Initializare: tip numeVariabila=expresie; expresie -
se refera la o data sau orice calculeaza o data.Sau: tip
numeVariabila1=expresie, numeVariabila2=expresie;
Ex: final double PI=3.14; int x;int x=0;int x=0, y=0;char
initialaNume=A;string numePersoana=Ana;
Constantele se scriu cu litere mari si au sufixul final, iar
variabilele se scriu cu prima litera mica, iar daca contin mai
multe cuvinte primul se scrie cu prima litera mica iar celalalte cu
prima litera mare.
Variabile:membre declarate in interiorul clasei vizibile pentru
subrutinele acelei clase cat si pentru alte clase in functie de
nivelul de acceslocale declarate intr-o subrutina vizibile doar in
subrutina respectivalocale declarate intr-un boc de cod vizibile
doar in blocul respectivParametrii subrutinelor sunt vizibili doar
in subrutinele respective.
C3.Controlul executiei si subrutineC3.1.Controlul executiei
while (expresie booleana) {...}
if (expresie booleana) {...}else {...}
do {...} while (expresie booleana);
for ( initializare; expresie booleana; pas iteratie ) {...}
switch (expresie) {case valoare1:...break;case
valoare2:...break;...case valoaren:...break;default: // optional
default case...}
SWITCH - doar pentru variabile de tip primitiv
try {...}catch ( numeclasaexceptie numevaloare ) {...}
Alte instructiuni:Break - paraseste fortat corpul unei structuri
repetitiveContinue - termina fortat iteratia curenta a unui ciclu
si trece la urmatoarea iteratieReturn (valoare) - termina o metoda
si eventual returneaza o valoare
numeEticheta : - defineste o eticheta
Ex:while(){if () continue numeEtichetaif () break
numeEticheta}
C4.Variabile de tip referintaC4.1.VectoriDeclarare: tip
numeVector []; tip [] numeVector;Instantiere(alocare de memorie):
numeVector [ ]= new tip [nrelemente];D+I: tip numeVector [ ]= new
tip [nrelemente];Optional initializare: Ex: int x [ ] = { 1, 8, 27,
64, 125, 216, 343 };Declararea unui vector nu implica si alocarea
memoriei. Instantierea lui se face prin operatorul new.
Tablouri multidimensionaletip matrice[] [] = new tip [nrlinii]
[nrcoloane]
Dimensiunea unui vector: cu ajutorul variabilei lengthEx: int x
[] = new int [5];int m [] [] = new int [5]
[10];x.length=5m[0]=10
Copierea vectorilor: element cu element sau cu metoda
system.arraycopyEx: int a [] = {1,2,3,4}; int b [] = new int [4];I:
for (i=0; i