curs1 java

Upload: adrian-necula

Post on 08-Oct-2015

90 views

Category:

Documents


3 download

DESCRIPTION

java

TRANSCRIPT

  • Limbaje de programare IIISuport de curs prof.univ.dr.Mariana Marinescu

  • 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.

  • Notiuni introductiveIstoric 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).

  • 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.

  • - 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.

  • Tehnologia Java si componentele saleIn 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. 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 JavaCele 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.

  • Implementarea firmei Sun a limbajului JavaImplementarea 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.

  • 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.

  • 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.

  • 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 JavaCu 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.

  • Etapele dezvoltarii unei aplicatii Java1. 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.

  • Structura unei aplicatii JavaO 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.

  • 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.

  • Sintaxa definirii unei metode este: nume_metoda (){ }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 [];unde:- - specifica valoarea returnata de metoda; in anumite situatii pentru iesirea fortata dintr-o metoda care are tipul void se foloseste instructiunea return fara .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.

  • 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) JavaPot 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.

  • 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.

  • 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 .;sau import .*;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 ()

  • Crearea de pachete cu clase de obiecte proprii aplicatiei. Instructiunea packageDaca 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 ;Observatie: In cazul folosirii IDE NetBeans, instructiunea package este inclusa automat, atunci cand se creaza o noua aplicatie Java (proiect Java).

  • Elemente de baza ale limbajului JavaSetul de caractere folosit de limbajul JavaLimbajul 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.

  • 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.IdentificatoriIdentificatorii, 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.

  • 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.SeparatoriSeparatorii 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).

  • ComentariiComentariile 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.

  • VariabileVariabila 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.

  • Tipurile primitive de date definite in JavaUn 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.

  • Tabelul de mai jos prezinta o descrie generala a tipurilor primitive de date utilizate de Java.

    TipValoriReprezentare in memoriebyte[-128, 127]Intreg pe 1 byteshort[-32768, 32767]Intreg pe 2 bytesint[2.147.483.648, 2.147.483.648]Intreg pe 4 byteslong[-263, 263 -1]Intreg pe 8 bytesfloat6 cifre semnificative [10-46, 1038]Virgula mobila pe 4 bytesdouble15 cifre semnificative [10-324, 10308]Virgula mobila pe 8 byteschar coduri UnicodPe 2 bytebooleanfalse sau truePe un bit

  • 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.

  • 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.

  • 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 voidTipul 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 (). ConstanteO 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.

  • 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.

  • 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.

  • Sintaxa folosita pentru declararea de variabile este: [= ] [, [= ] ];unde:- - specifica tipul de data al variabilelor;- , , - specifica numele simbolic al variabilelor care se declara (adica, identificatorii);- , , - 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.

  • 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 ecranIn 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).

  • 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 (); unde:- - 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.

  • 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 (); unde:- - 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();System.out.println();

  • 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:.readLine();unde:- - 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.

  • 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); }}

  • 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.

  • 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); }}

  • Interfata IDE NetBeans

  • Crearea unui proiect Java folosind IDE NetBeansPasul 1 - Alegerea tipului de proiect java

  • Pasul 2 - Stabilirea numelui si a locatiei proiectului