Documente Academic
Documente Profesional
Documente Cultură
Suport de curs
prof.univ.dr.Mariana Marinescu
02/16/15
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, appleturi;
- 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.
02/16/15
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).
02/16/15
02/16/15
02/16/15
02/16/15
02/16/15
02/16/15
02/16/15
02/16/15
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).
02/16/15
11
02/16/15
12
Scrierea
instructiunilor
programului-sursa
(.java)
Compilarea
programuluisursa cu
ajutorul
compilatorului
Java
Conversia
fiecarei
instructiuni
bytecode in
Da
instructiune
Cu succes?
executabila pe
masina gazda cu
ajutorul
interpretorului
Java (.class)
Nu
Executia
fiecarei
Da
instructiuni cu
Cu succes?
ajutorul
interpretorului
Java (.class)
Nu
Modificarea
instructiunilor
programului
02/16/15
13
02/16/15
14
02/16/15
15
02/16/15
16
02/16/15
17
02/16/15
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 ()
02/16/15
19
02/16/15
20
02/16/15
21
\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.
02/16/15
22
02/16/15
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.
02/16/15
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.
02/16/15
25
02/16/15
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
Intreg pe 8 bytes
float
double
char
coduri Unicod
Pe 2 byte
boolean
Pe un bit
02/16/15
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.
02/16/15
28
02/16/15
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.
02/16/15
30
02/16/15
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.
02/16/15
32
02/16/15
33
02/16/15
34
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.
02/16/15
35
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();
02/16/15
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.
02/16/15
37
/**
* 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);
}
}
02/16/15
38
02/16/15
39
02/16/15
40
02/16/15
41
02/16/15
42
02/16/15
43