curs 1 _tr

61
Curs 1 Bibliografie suplimentara: https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html http://www.functionx.com/java/ http://www.tutorialspoint.com/java/java_characters.htm https://docs.oracle.com/javase/tutorial/ https://docs.oracle.com/javase/tutorial/java/data/ numberformat.html https://docs.oracle.com/javase/tutorial/java/data/beyondmath.html https://docs.oracle.com/javase/tutorial/java/data/QandE/numbers- questions.html https://docs.oracle.com/javase/tutorial/displayCode.html? code=https://docs.oracle.com/javase/tutorial/java/data/QandE/ MaxVariablesDemo.java https://docs.oracle.com/javase/tutorial/java/data/ numberclasses.html https://docs.oracle.com/javase/tutorial/java/data/ numberformat.html https://docs.oracle.com/javase/tutorial/java/data/beyondmath.html JAVA. Notiuni sumare introductive http://www.oracle.com/technetwork/java/archive-139210.html Java este un mediu de programare ce oferă utilizatorului cadrul necesar şi uneltele necesare pentru dezvoltarea aplicaţiilor Java. Java este o tehnologie ce oferă suport dezvoltării de aplicaţii distribuite, independente de platformă. Programele Java pot rula pe diferite tipuri de platforme, cu condiţia ca pe aceste platforme să fie instalată o maşină virtuală Java deasupra platformei respective. Avantajul limbajului Java, comparativ cu alte limbaje de programare este conexiunea strânsă cu tehnologia Internet. Tehnologia Java se concretizează într-un portofoliu de produse concepute pornind de la ideea că acelaşi software trebuie să ruleze pe sisteme şi dispozitive diferite. Produsele sunt organizate după următoarea structură: Nucleu/Aplicaţii desktop – J2SE ( Java 2 Platform Standard Edition )

Upload: florin-oprea

Post on 24-Dec-2015

23 views

Category:

Documents


1 download

DESCRIPTION

Curs introductiv de java

TRANSCRIPT

Curs 1 Bibliografie suplimentara:https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.htmlhttp://www.functionx.com/java/http://www.tutorialspoint.com/java/java_characters.htmhttps://docs.oracle.com/javase/tutorial/https://docs.oracle.com/javase/tutorial/java/data/numberformat.htmlhttps://docs.oracle.com/javase/tutorial/java/data/beyondmath.htmlhttps://docs.oracle.com/javase/tutorial/java/data/QandE/numbers-questions.htmlhttps://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/java/data/QandE/MaxVariablesDemo.javahttps://docs.oracle.com/javase/tutorial/java/data/numberclasses.htmlhttps://docs.oracle.com/javase/tutorial/java/data/numberformat.htmlhttps://docs.oracle.com/javase/tutorial/java/data/beyondmath.html

JAVA. Notiuni sumare introductivehttp://www.oracle.com/technetwork/java/archive-139210.html

Java este un mediu de programare ce oferă utilizatorului cadrul necesar şi uneltele necesare pentru dezvoltarea aplicaţiilor Java. Java este o tehnologie ce oferă suport dezvoltării de aplicaţii distribuite, independente de platformă. Programele Java pot rula pe diferite tipuri de platforme, cu condiţia ca pe aceste platforme să fie instalată o maşină virtuală Java deasupra platformei respective. Avantajul limbajului Java, comparativ cu alte limbaje de programare este conexiunea strânsă cu tehnologia Internet.

Tehnologia Java se concretizează într-un portofoliu de produse concepute pornind de la ideea că acelaşi software trebuie să ruleze pe sisteme şi dispozitive diferite. Produsele sunt organizate după următoarea structură:

Nucleu/Aplicaţii desktop – J2SE ( Java 2 Platform Standard Edition ) Suport enterprise/Server – J2EE ( Java 2 Platform Enterprise Edition ) Suport pentru dispozitive mobile – J2ME ( Java 2 Platform Micro Edition ) Suport pentru Servicii WEB si suport XML Alte tehnologii

Nucleu/Aplicaţii desktop – J2SE ( Java 2 Standard Edition )J2SE pune la dispoziţia programatorilor un mediu complet pentru dezvoltarea aplicaţiilor

desktop şi constituie baza pentru J2EE. Nucleul

Conţine limbajul Java, şi mediul de execuţie pentru aplicaţii. Utilizat împreună cu componentele desktop furnizează suport pentru toată gama de aplicaţii şi applet-uri independente de paltformă;

Aplicaţii desktopCuprind biblioteci de clase pentru crearea componentelor reutilizabile, precum şi a aplicaţiilor cu interfaţă grafică;

Suport enterprise/Server – J2EE ( Java 2 Platform Enterprise Edition )Defineşte standarde pentru dezvoltarea aplicaţiilor bazate pe componente, în cadrul unei arhitecturi multi-nivel.Suport pentru dispozitive mobile – J2ME ( Java 2 Platform Micro Edition )

Pune la dispoziţie un mediu de aplicaţie ce se adresează necesităţilor specifice domeniului telefoniei mobile, şi altor dispozitive mobile. Include maşini virtuale şi un set de interfeţe de programare a aplicaţiilor definite în cadrul comunităţii Java, precum şi de experţi ai fabricanţilor renumiţi de dispozitive.Suport pentru Servicii WEB

Serviciile WEB reprezintă aplicaţii orientate WEB care folosesc standardele deshise XML şi protocoale de transport pentru schimbul de informaţii cu aplicaţii client sau alte servicii WEB. Suportul se concretizează în interfeţe de programare a aplicaţiilor şi instrumente pentru dezvoltarea de servicii WEB interoperabile şi aplicaţii client. Interschimbul de date se realizează datorită faptului că acestea sunt reprezentate în standardul XML.Suport XML - Extensible Markup Language (XML), reprezintă un standard deschis, interoperabil şi bazat pe text pentru reprezentarea datelor. De asemenea constituie un element esenţial în dezvoltarea de servicii WEB, după cum s-a arătat mai sus.Descrierea tehnologiilor JavaJava Foundation Classes (JFC)

Reprezintă un ansamblu de biblioteci de clase distribuite ca parte integrantă din platforma Java 2, ediţia standard (J2SE), ce oferă suport pentru construirea de interfeţe grafice utilizator, pentru aplicaţii client ce rulează pe platformele Microsoft Windows, Linux şi MacOS.

JavaBeansAceastă tehnologie specifică arhitectura componentelor J2SE. Componentele reprezintă programe reutilizabile, ce se dezvoltă şi asamblează cu uşurinţă pentru a crea produse complexe.

JDBC ( Java Database Conectivity )Se constituie într-o interfaţă de programare a aplicaţiilor cu baze de date relaţionale, pentru o mare varietate de furnizori. Oferă suport şi pentru prelucrarea surselor de date tabulare, ca de exemplu foi de calcul, şi fişierelor text. Accesul la bazele de date se realizează prin drivere specifice fiecărui furnizor.

Java RMI Java Remote Method Invocation )Permite programatorilor dezvoltarea de aplicaţii distribuite în cadrul cărora metodele obiectelor aflate la distanţă pot fi invocate de pe alte maşini virtuale. Pentru transfer se foloseşte mecanismul de serializare.

JAI ( Java Advanced Imaging )Oferă un set de interfeţe bazate pe un model de programare avansat pentru manipularea facilă a imaginilor.

JAAS ( Java Authentication And Authorization Service )Set de interfeţe de programare a aplicaţiilor care permit impunerea autorizării utilizatorilor şi controlul accesului acestora. Implementează varianta Java a cadrului standard PAM ( Pluggable Authentication Module) şi suportă autentificare bazată pe user.

JCA ( Java Communications API )

Se utilizează în cadrul aplicaţiilor cu suport de comunicaţie independent de platformă prin fax, voice-mail şi smart-cards.

JCE ( Java Cryptography Extension )Se constituie într-un set de pachete ce oferă un cadru pentru implementarea criptării, generării de chei şi a algoritmilor de autentificare a mesajelor. Sunt implementate cifruri sincrone, asincrone, la nivel de bloc şi la nivel de flux. De asemenea se oferă suport pentru obiecte sigilate şi fluxuri securizate.

JMX ( Java Management Extensions )Cuprinde un set de instrumente pentru dezvoltarea de soluţii distribuite, dinamice şi modulare pentru gestiunea şi monitorizarea dispozitivelor, aplicaţiilor şi reţelelor orientate pe servicii.

JMF ( Java Media Framework )Permite exploatarea de către aplicaţii a resurselor multimedia, într-o manieră specifică tehnologiei Java. Oferă facilităţi pentru captură, redare, codificare şi decodificare în şi din multiple formate.

JNDI ( Java Naming And Directory Interface )Înzestrează aplicaţiile bazate pe tehnologia Java cu o interfaţă unificată pentru multiple servicii de nume şi directoare.

JSSE ( Java Secure Socket Extension )Pachet ce gestionează securitatea comunicaţiilor pe Internet. Reprezintă versiunea Java pentru protocoalele SSL ( Secure Sockets Layer ) şi TLS ( Transport Layer Security ). Înglobează funcţionalitate pentru criptarea datelor, autentificare la nivel de server, integritatea mesajelor şi opţional autentificare la nivel client.

JAXP( Java API for XML Processing )Permite aplicaţiilor citirea şi transformarea documentelor XML independent de o anumită implementare de procesare.

JAXR ( Java API for XML Registries )Oferă o modalitate uniformă de folosire a înregistrărilor bazate pe standarde deschise( ca de exemplu ebXML ) sau a specificaţiilor de cosorţiu ( UDDI ).

Java MailPune la dispoziţie un cadru independent de platformă şi protocol pentru dezvoltarea aplicaţiilor pentru trimiterea de mesaje prin poştă electronică.

JMS ( Java Message Service ) - reprezintă un standard de mesaje ce permite componentelor de aplicaţie J2EE să creeze, să trimită, să primească şi să citească mesaje. Permite comunicarea în mediu distribuit prin cuplare slabă şi în mod asincron. Java Servlet

Implementează un mecanism simplu şi consistent pentru extinderea funcţionalităţii unui server WEB, pentru accesarea sistemelor de afaceri existente. Este de fapt o aplicaţie ce se execută pe server la cererea unui client, cu un scop bine precizat.

JSP ( Java Server Pages ) - tehnologie reprezintă varianta Java pentru gestionarea paginilor WEB cu

conţinut dinamic. Permite dezvoltarea rapidă a aplicaţiilor independente de server şi platformă.

J2EE Connector - tehnologie Java pentru problema interconectării între variate servere de aplicaţii şi sistemele informatice de întreprindere EIS – Enterprise Information Systems. SAAJ ( SOAP with Attachments API for Java )

Pune la dispoziţie un standard de trimitere a documentelor XML prin Internet.J2EE Transactions

Simplifică programarea aplicaţiilor pentru gestiunea tranzacţiilor distribuite. Suportul pentru tranzacţiile distribuite este implementat prin două specificaţii JTA ( Java Transaction API ) şi JTS ( Java Transaction Service ).

JMI ( Java Metadata Intarface )Această specificaţie permite implementarea unei infrastructuri dinamice şi independente de platformă pentru gestiunea creării, stocării, accesării, descoperirii şi schimbului de metadate. Se bazează pe specificaţia MOF ( Meta Object Facility ) definită de OMG ( Object Management Group ), un standard industrial aprobat pentru gestiunea metadatelor. Standardul MOF constă într-un set de artefacte de modelare de bază, descrise prin UML. Modelele pentru metadate ( metamodele ) pot fi construite din aceste blocuri de bază. JMI defineşte şi interfeţele Java standard pentru pentru aceste componente de modelare, facilitând astfel descoperirea şi accesarea metadatelor într-o manieră independentă de platformă. Descoperirea, interogarea sau accesarea metadatelor se realizează atât la momentul proiectării cât şi la momentul execuţiei. Semantica oricărui sistem modelat poate fi complet descoperită şi manipulată.

Caracteristici ale limbajului JavaSimplitate

Tot în vederea simplităţii, tehnologia Java conţine aşa numitul Garbage Colector, care face ca programatorul să nu mai aibă grija dezalocării zonelor de memorie anterior alocate. Pentru cunoscătorii limbajului C++ acest lucru înseamnă că nu mai e nevoie de delete după new.

Orientat pe obiecteLimbajul Java , spre deosebire de C/C++, este în întregime orientat pe obiecte. Nu există

o aplicaţie în care să nu existe cel puţin un obiect, o clasă. În Java, orice, cu excepţia câtorva tipuri de date fundamentale, este un obiect. Tehnologia programării orientate pe obiecte (OOP – Object Oriented Programming) este singura care satisface cerinţele actuale ale dezvoltării software.

RobustSe măreşte gradul de siguranţă al codului. Sunt două nivele de verificare pentru mărirea

gradului de siguranţă: unul la compilare (prezent în marea majoritate a limbajelor) şi unul în timpul rularii. Ca urmare un program este mai puţin supus erorilor. Securitatea

Într-o lume în care calculatoarele nu mai pot exista ca enităţi solitare, fără a fi conectate în reţea, problema securităţii este una din cele mai stringente. Problema care se pune este aceea a existenţei unui nivel de securitate în cadrul limbajului.Unul din principalele avantaje ale limbajului Java care l-au făcut atât de popular este gradul de securitate. Programele Java sunt făcute să ruleze în sisteme distribuite, şi calculatoarele pe care ele lucrează nu pot fi sigure de provenienţa programelor. Dinamic

Java este un limbaj dinamic prin faptul că multe decizii privind evoluţia programului se iau în momentul rulării, la runtime. Datorită faptului că multe din aplicaţiile Java sunt preluate

de pe Internet sub forma de applet-uri chiar în momentul execuţiei lor, deci din reţea, aceste programe pot fi actualizate să facă faţă noilor cerinţe, utilizatorul dispunând în orice moment de cea mai nouă variantă.Independent de platformă

Unul din marile avantaje ale limbajului Java este independenţa de platformă. Se impunea această independenţă de platformă, ţinând cont de ideea de lucru în medii distribuite. De fapt un program Java lucrează pe o singură maşină: maşina virtuală Java ( Java Virtual Machine- JVM).

Ca urmare a utilizării emulatorului un program Java poate rula pe orice platformă pentru care există un emulator Java. Partea negativă este că folosirea emulatorului duce la marirea timpului de execuţie. Soluţia este compilarea just-in-time (JIT) care transformă întregul program Java în program maşină înainte de execuţia lui.

Compilatoarele just-in-time lucrează ca şi interpretoarele doar că conversia nu se face la nivel de instrucţiune ci la nivel de program, crescând considerabil viteza de execuţie a programului Java.Suport pentru multithreading

Multithreading-ul este cel care permite ca un program să execute mai multe sacini aparent în acelaşi timp, utilizând mai multe fire de execuţie (thread-uri).

Java oferă suport multithreading la nivel de limbaj deci la cel mai jos nivel (clasa Thread) oferindu-i utilizatorului posibilitatea de a crea un nou fir de execuţie ca şi cum ar creea oricare alt obiect. Mai mult, Java permite comunicarea între firele de execuţie precum şi sincronizara lor.

Interconexiunea cu browsere WWWAcesta este unul din avantajele care a facut limbajul Java aşa de popular. Multe din

firmele care dezvoltă browsere WWW au implementat maşina virtuală Java în interiorul acestor browsere.

Amintim cele mai utilizate browsere care suportă Java: Netscape Navigator al firmei Netscape şi Internet Explorer al firmei Microsoft.

Având în vedere aceste caracteristici, Java s-a conturat ca un limbaj performant, care s-a impus în lumea informaticii.Pachetul JDK

La baza dezvoltării unui program Java stă mediul de dezvoltare pus la dispoziţie de firma Sun. Acesta este Java Developers Kit (JDK-ul) şi trebuie considerat ca mediu de referinţă în programarea Java. Mediul JDK conţine pe de o parte o serie de biblioteci de clase Java necesare scrierii unui program şi pe de o parte un set de utilitare necesare compilării, testării, execuţiei şi documentării unei aplicaţii Java. O clasă, un fişier bytecode cu extensia .class, reprezintă unitatea fundamentală a unui program executabil Java.

O bibliotecă de clase cuprinde o serie de clase ce au un numitor comun. O astfel de bibliotecă este cunoscută în java sub numele de package.

JDK-ul conţine câteva package-uri fundamentale, package-uri care conţin clase fără de care nu se pot dezvolta aplicaţii Java. Package-urile Java incluse în JDK formează principalul API- Application Programming Interface.

Orice alt mediu care poate executa aplicaţii Java diferit de mediul JDK trebuie să includă acest API. Pe lângă aceste pachete fundamentale, utilizatorul poate folosi şi altele dezvoltate chiar de el. Trebuie însă să se asigure că aceste pachete adiţionale sunt

disponibile şi pe platforma pe care aplicaţia se execută, nu numai unde aceasta a fost creată.

Cuvântul cheie import este folosit pentru a face cunoscută utilizarea unei clase dintru-un package sau a unui întreg package.

Exemplu:import java.sql.*;import java.awt.Graphics;import java.applet.*;

Un package este o colecţie de clase şi interfeţe Java între care există o relaţie de asociere. Prin utilizarea conceptului de package, Java oferă un mecanism de mamagement al identifiactorilor (numelor) care se pot atribui claselor (”name spaces”). Printr-un package Java se pot rezolva eventualele conflicte ce pot apărea datorită existenţei a două clase cu acelaşi nume. Astfel dacă avem clasa Rectangle din package-ul java.awt , putem avea aceeaşi clasă Rectangle din pachetul myPackage. Dacâ în program dorim să utilizăm clasa Rectangle din java.awt atunci se specifică aceasta prin import java.awt

Principalele package-uri din Java APIpackage java.applet

Pachetul conţine clasele necesare dezvoltării unui applet (program Java ce se execută în cadrul unui browser WWW)

package java.awt., java.awt.event,package javax.swing;

Pachete ce se folosesc în dezvoltarea interfeţelor grafice de comunicare cu utilizatorul şi dezvoltarea aplicaţiilor ce implică grafică

package java.beansConţine clase necesare implementării tehnologiei Java Beans, o tehnologie orientată pe crearea unor componente ce pot fi reutilizate.

package java.ioPachetul include clasele necesare lucrului cu stream-uri

package java.langConţine clasele fundamentale fără de care un program Java nu poate exista.

package java.mathEste utilizat pentru lucrul cu funcţii matematice

package java.netPachetul conţine clasele necesare programării în reţea

package java.rmiPachet utilizat pentru creearea unor aplicaţii Java ce lucrează în sisteme distribuite (RMI Remote Method Invocation). Uşurează apelul unor metode din obiecte disponibile pe diferite computere ce sunt conectate în reţea.

package java.securityPachet ce priveşte asigurarea unui mecanism de securitate al sistemului software dezvoltat.

package java.sqlPachetul se foloseşte în vederea lucrului cu bazele de date.

package java.text

Pachetul este utilizat pentru lucrul cu texte.package java.util

Oferă suport pentru lucrul cu liste, vectori, dicţionare, informaţii legate de dată şi timp.

Pe lângă Java API pachetul JDK pune la dispoziţia programatorului o serie de unelte necesare dezvoltării, testării, analizei şi documentării programelor Java.Dintre acestea amintim:javac- Java Language Compiler

Acesta este compilatorul java care realizează transformarea surselor text scrise în limbaj de programare Java în codul executabil pe maşina virtuală Java ( JVM ), în bytecodes, in clase java (fişiere cu extensia .class). Fişierul sursă (text limbaj Java) cu extensia .java se transmite ca şi paramentru în programul javac.

javac HelloJava.java

java – Java InterpreterAcesta este interpetorul Java care execută programele Java (bytecodes, fişiere class) . Prin lansarea în execuţie a acestui utilitar se porneşte de fapt JVM. Programul emulează JVM convertind instrucţiunile JVM în instrucţiuni ale maşinii reale. Este util în execuţia aplicaţiilor Java stand-alone nu şi a applet-urilor. Are ca paramentru numele fişierului rezultat în urma compilării.java HelloJava

jre –Java Runtime InterpreterEste similar cu interpretorul java dar este o variantă mai simplificată

jdb – Java Language DebuggerEste unealta utilizată pentru depanarea programelor Java

javah – Java HeaderEste utilizat pentru a permite programelor scrise în limbajul Java să comunice cu programele scrise în limbajul C. Cu javah se creează fişiere header C şi fişiere stub C necesare pentru a reliza această conexiune.

javadoc – Java DocumentCu acest instrument se generează documenţia programelor Java în format html. Documentarea se face pe baza comentariilor din program. Programul javadoc se aplică asupra fişierelor sursă .java

appletviewerUtilitarul este utilizat pentru testarea appleturilor. Programul lansează în execuţie o maşină virtuală Java. Este un browser minimal de WWW care suportă toate caracteristicile Java ale mediului jdk din care provine.

Scurta comparatie C – Java

In Java nu exista cuvântul cheie const iar constantele sunt declarate ca variabile cu atributele static si final. Exemplu:public static final double PI = 3.14159265358979323846; // in pachetul Math

Java nu contine declaratia typedef deoarece definirea unei clase introduce automat un nume pentru un nou tip de date.

Java nu contine operatorul sizeof , pentru ca lungimea variabilelor este cunoscuta, iar la alocarea de memorie (cu new) nu trebuie specificata dimensiunea alocata.

Compilatorul Java nu are preprocesor, rezulta deci ca nu exista directivele preprocesor folosite de C si C++ #define, #include etc.Structura programelor Java

O aplicatie Java contine cel putin o clasa, care contine cel putin o metoda cu numele "main" de tip void si cu atributele static si public. Metoda "main" are ca unic argument un vector de obiecte String. Ca si în C, executia unui program începe cu functia “main”, numai ca, “main” trebuie sa fie inclusa, ca metoda statica, într-o clasa si trebuie sa aiba un argument vector de siruri. Exemplu 1:

public class Main {public static void main (String arg[]) {System.out.println (" Curs Java Basic ");}}

In Java nu conteaza ordinea în care sunt scrise functiile (metodele) unei clase, deci o functie poate fi apelata înainte de a fi definita si nici nu este necesara declararea functiilor utilizate (nu se folosesc prototipuri de functii). Orice functie apartine unei clase si nu se pot defini functii în afara claselor.

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).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;

Afisarea in consola 

System.out.print() System.out.println()

Diferenta intre cele doua este ca a doua concateneaza imediat dupa parametrul dat pentru afisare caracterul unicode de linie noua \n.

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

- System.err pentru fluxul de erori.

Exemplu de clase care reunesc metode statice, functii care pot fi executate fara a crea obiecte de tipul clasei respective.

class Main1 {public static void main (String arg[ ]) { // cu "main" incepe executiawriteln ("Curs Java Basic ");}public static void writeln (String txt) { // afiseaza un text pe ecranSystem.out.println (txt);// System.out.println ("Curs Java Basic ");}}

Observatii: O metoda ne-statica trebuie apelata pentru un anumit obiect, iar numele ei trebuie precedat de numele obiectului (si un punct). Metoda "println" este apelata pentru obiectul adresat de variabila "out", variabila publica din clasa System.

Un fisier sursa Java poate contine mai multe clase, dar numai una din ele poate avea atributul public.

Numele fisierului sursa (de tip “java”) trebuie sa coincida cu numele clasei publice pe care o contine.

O clasa publica este accesibila si unor clase din alte pachete de clase. Compilatorul Java creeaza pentru fiecare clasa din fisierul sursa câte un fisier cu extensia “class” si cu numele clasei. Daca este necesar, se compileaza si alte fisiere sursa cu clase folosite de fisierul transmis spre compilare. Faza de executie a unui program Java consta din încarcarea si interpretarea tuturor claselor necesare executiei metodei “main” din clasa specificata în comanda “java”.

Numele unei metode statice trebuie precedat de numele clasei din care face parte (separate printr-un punct), daca este apelata dintr-o metoda a unei alte clase.Exemplu var 1:public class Main2 {public static void main (String arg[ ]) { // cu "main" incepe executiaUtil.writeln ("Curs Java Basic ");}}class Util {public static void writeln (String txt) { // afiseaza un text pe ecranSystem.out.println (txt);}

}

Exemplu var 2:

Date primitiveOrice program lucreaza cu date, iar pentru a lucra cu date acestea trebuiesc stocate. Deoarece memoria unui sistem in care putem stoca informatie este limitata pentru a plasa o informatie in memorie este necesar mai intai sa rezervam o zona in memorie in functie de tipul informatiei care va fi stocata. O informatie poate fi stocata sub forma de numar intreg, numar real, caracter, valoare booleana (adevarat sau fals) sau instanta. In afara de ultimul tip enumerat mai devreme toate celelalte informatii reprezinta tipuri de date primitive. Principalele tipurile primitive pe care le putem folosi in Java sunt: short, int, long, float, double, byte, boolean, char

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 întorc nici un rezultat, cum a fost cazul metodei main ().

Tipul boolean: Variabilele de acest tip pot lua doar valorile true şi false. Tipul char: Variabilele de acest tip sunt reprezentate pe 16 biţi şi pot primi ca valoare orice simbol din codul Unicode. O variabilă de tip caracter poate fi folosită oriunde poate apărea o valoare întreagă: este considerat numărul său de ordine în setul de caractere Unicode.

Tipuri întregi: Ele sunt următoarele: byte (octet) short (întreg scurt) int (întreg) long (întreg lung) reprezentate în ordine pe 1, 2, 4, 8 octeţi.

In calcule tipurile byte şi short sunt convertite la int. Tipurile în virgulă mobilă float şi double, reprezentate respectiv pe 4 şi 8 octeţi. Fiecărui tip primitiv din Java îi corespunde o clasă definită standard în Java: Boolean, Character, Byte, Short, Integer, Long, Float şi Double. În aceste clase apar constante şi metode utile. Orice zona de memorie se defineste folosind un tip de data si un nume (sau identificator); Numele se poate alege dupa urmatoarele reguli:

1. nu poate incepe cu cifra2. nu poate contine caractere speciale3. nu poate fi cuvant rezervat (keyword)Exemplu 1 declarare variabilepublic class declarare1 { public static void main (String arg[]) {int a=2,b,c; float d; double e; boolean v_bol; short v_sc; long v_long=4; System.out.println(a); } }

Exemplu 2 declarare si afisare variabilepublic class Declarare2 { public static void main (String arg[]) {int a=2,b,c; float d; double e; boolean v_bol; short v_sc; long v_long=4;

String c1="Curs Java Basic "; Util_.writeln (c1+":"+a+";"); //System.out.println(a); }}class Util_ {public static void writeln (String txt) { // afiseaza un text pe ecranSystem.out.println (txt);}}

Aceste zone de memorie reprezinta parti ale memoriei interne. Memoria interna se imparte in doua zone: stack si heap. Datele primitive sunt stocate in zone rezervate din stack;Primitivele int, long, byte, short: reprezinta zone de memorie rezervate pentru stocarea valorilor numerice intregi. Cel mai des, dintre acestea este folosit tipul int;Primitivele float si double: reprezinta zone de memorie folosite pentru stocarea valorilor numerice reale. Diferenta dintre cele doua tipuri de primitive este precizia zecimalelor valorilor stocate. Chiar daca float si double sunt folosite pentru acelasi tip de date nu putem transporta informatia dintr-un double intr-un float in mod direct, deoarece este posibila pierderea de precizie a valorii cu care se face aceasta operatiune. Pentru a pune totusi o valoare stocata intr-o zona de memorie double intr-un float putem folosi conversia explicita. Acest lucru se poate face in felul urmator: int a=2,b,c; float d=4,f; f=d+(float)a;Primitiva char: poate fi folosita pentru a stoca caractere in format Unicode. Anumite caractere pot fi reprezentate printr-o secvenţă Escape de o formă aparte.

Primitiva boolean: este folosita pentru a stoca una dintre valorile true sau false; Spre deosebire de alte limbaje de programare nu mai exista posibilitatea de a folosi valorile 1 si 0 pentru adevarat sau fals. Pentru a reprezenta valorile adevarat sau fals (tip boolean) singura modalitate este folosirea cuvintelor true si false. true si false se scriu numai cu litere mici si reprezinta cuvinte rezervate in Java.

Identificatorii Java :• toti identificatorii ar trebui să înceapă cu o literă ( de la A la Z sau A la Z ) , caracter valută ( $ ) sau de subliniere ( _ ) .• Un cuvânt cheie nu poate fi utilizat ca un element de identificare .• identificatori sunt case sensitive .• Exemple de identificatori corecti : age, $salary, _value, __1_value• Exemple de identificatori incorrect definit : 123abc , -salary

Java Modifiers: Există două categorii de modificatori : Access Modifiers: default, public , protected, private Non-access Modifiers: final, abstract, strictfp

Java Variables:We would see following type of variables in Java:

Local Variables

Class Variables (Static Variables) Instance Variables (Non-static variables)

Java Arrays:Un tablou reprezinta o colectie de variabile de acelasi tip. Exista pozibilitatea de a defini o structura de un numar definit de variabile de un anumit tip. Aceste tipuri de structui de date se numesc tablouri (in engleza arrays).Java Enums:ENUM au fost introduse de la Java 5.0 si permite ca o variabila sa aiba o valoare dintr-o lista predefinita, astfel se reduc eventualele erori..! ENUM pot fi declarate ca atare sau în interiorul unei clase. Metode, variabile, constructorii pot fi definite în interiorul ENUM.

Exemplu:class alege_enum { enum alege{ SMALL, MEDIUM, LARGE } alege dimensiune;}public class Test_enum { public static void main(String args[]){ alege_enum variabila = new alege_enum(); variabila.dimensiune = alege_enum.alege.MEDIUM ; System.out.println("Size: " + variabila.dimensiune); }}Cuvinte cheie:

abstract assert boolean breakbyte case catch charclass const continue defaultdo double else enumextends final finally floatfor goto if implementsimport instanceof int interfacelong native new packageprivate protected public returnshort static strictfp superswitch synchronized this throwthrows transient try voidvolatile while

Comments in JavaJava supports single-line and multi-line comments very similar to c and c++. All characters available inside any comment are ignored by Java compiler.

 

Operatori Operatorii se clasifica in:

operatori matematici: + - * / (cat) % (rest) operatori logici: && || ! operatori de comparare <, >, <=, >=, ==, != operatorul de instantiere: new operatorul de atribuire: =

Exemplu cu operatori de atribuire

public class atribuire { public static void main (String arg[]) {int a=2;int b=a+10;b=b+b; System.out.println("a: "+a+"si b: "+b); }}ATENTIE:

Clasa Scanner apare în pachetul java.util si permite regasirea într-un text a tipurilor primitive si a sirurilor, folosind expresii regulate.public final class Scanner extends Object implements Iterator<String>Un scanner (obiect de tipul Scanner) împarte intrarea în entitati, folosind un sablon de delimitatori (delimitatorii impliciti sunt spatiile albe) si regaseste entitatile prin invocarea de metode next. Pentru a verifica daca urmeaza o entitate de un anumit tip se folosesc metodele hasNext.

Exemplu. Citirea unui întreg de la intrarea standard se poate realiza astfel:Scanner sc = new Scanner(System.in);int i = sc.nextInt();

Intrarea poate fi si un fisier text:Scanner sc = new Scanner(new File("fisier"));sau un sir de caractere.

Exemplu. import java.util.*; import java.io.*;class Scan while(!s.equals("STOP")); out.close(); std_out.close(); }}unde despre clasa PrintWriter vom vorbi în continuare.

Metodele de scanare relative la citire pot conduce la blocare prin asteptarea unei valori de intrare.

Cele mai folosite metode sunt urmatoarele:public boolean hasNext()

întoarce true daca mai urmeaza o entitate;public String next()

detecteaza si întoarce urmatoarea entitate;

public boolean hasNextLine()întoarce true daca mai urmeaza o noua linie de intrare;

public String nextLine()întoarce urmatoarea linie de la intrare;În metodele descrise în continuare, XXX poate fi:

Boolean, Byte, Short, Int, Long, Float, Double, BigInteger, BigDecimal: metodele hasNextXXX(), cu semnificatie evidenta, pot lansa exceptia:

IllegalStateException daca scanner-ul este închis. metodele nextXXX(), cu semnificatie evidenta, pot lansa exceptiile:

InputMismatchException - daca entitatea nu este cea asteptata;NoSuchElementException - daca s-a ajuns la sfârsitul intrarii; IllegalStateException - daca scanner-ul este închis.

Metoda:public void close() închide scanner-ul.Se observa ca nu exista o metoda nextXXX() pentru citirea de caractere. Putem însa citi o succesiune de caractere separate prin spatii albe, pâna la '$', de exemplu în modul urmator: Scanner sc = new Scanner(System.in); char ch = sc.next().charAt(0); while(ch != '$')

Exemplu compleximport java.util.Scanner;public class calcul {public static void main(String[] args) {//declaratii de variabile localedouble l,L,aria,perimetru;Scanner intrare;intrare = new Scanner(System.in);//afisarea pe ecran a textului lungimea este:System.out.print("lungimea este ");//citirea unui numar real de la tastaturaL = intrare.nextFloat();System.out.print("latimea este: ");l = intrare.nextFloat();//formula de calcul a masei idealearia=l*L;perimetru=2*(L+l);System.out.println("aria este " + aria);System.out.println("perimetru este " + perimetru);}}Atribuirea de valori variabilelor char:

public class variabile_char { public static void main (String arg[]) {

char c1='a';char c2='\u0000';char c3='\n'; char c4='\t'; System.out.println("c1="+c1+"c2= nimic"+c2+"c3="+c3+"c4="+c4+"c1="+c1); }}

Operatorii de comparare pot fi folositi pentru scrierea expresiilor de tip boolean (care au ca rezulat true sau false)Exemplu:

//import java.util.Scanner;public class test_bol {public static void main(String[] args) {//declaratii de variabile localeboolean ras1=1>0, ras2=1==5,ras3=3<=3;System.out.println("ras1=1>0 " + ras1);System.out.println("ras2=1==5 " + ras2);System.out.println("ras3=3<=3 " + ras3);}}

ATENTIE! Nu confundati operatorul == (de testare a egalitatii) cu operatorul = (de comparare). Cei doi nu pot fi inlocuiti unul cu celalalt.

Operatori de comparare: == testare a egalitatii != testare a inegalitatii < mai mic > mai mare <= mai mic sau egal >= mai mare sau egal

Operatorii logici || sau && si ! not

Exemplupublic class comparatie {public static void main(String[] args) {

//declaratii de variabile localeboolean ras1 = ! (1>0),ras2=(1==5) || (2<5),ras3=(3<=3) && (2>=2);System.out.println("ras1 " + ras1);System.out.println("ras2= " + ras2);System.out.println("ras3= " + ras3);}}

Operatorul condiţional ?: Acest operator se utilizează în expresii sub forma: ( cond ? e1 : e2 )public class comparatie_conditional {

public static void main(String[] args) {//declaratii de variabile localeint a=6,b=7,max;max=a>b?a:b;

System.out.println("numarul maxim este " + max);}}

Operatorul supraincarcat +:

Operatorul + este considerat un operator supraincarcat. Acesta poate fi folosit pentru a concatena a doua siruri de caractere. Exemplu:public class concatenare { public static void main(String[] args) {System.out.println("mesaj 1 " + "ras1");System.out.println("mesaj 2 "+ 2+2);System.out.println("mesaj 3 " + (2+2));System.out.println("mesaj 4 " + (2+2)+true);System.out.println("mesaj 3 " + (2+2)+false);

} }

 Structuri de control decizionale if si switch if(conditie){// set de instructiuni care se executa in cazul in care conditia este adevarata

}else{//set de instructiuni care se executa daca conditia este falsa}

Blocul de instructiuni else poate lipsi daca nu contine instructiuni.

import java.util.Scanner;public class calcul_if {public static void main(String[] args) {//declaratii de variabile localedouble l,L,aria,perimetru;Scanner intrare;intrare = new Scanner(System.in);//afisarea pe ecran a textului lungimea este:System.out.print("lungimea este ");//citirea unui numar real de la tastaturaL = intrare.nextFloat();System.out.print("latimea este: ");l = intrare.nextFloat();//formula de calcul a masei idealearia=l*L;perimetru=2*(L+l);System.out.println("aria este " + aria);System.out.println("perimetru este " + perimetru);if(l==L) System.out.println("ati definit un patrat" );else System.out.println("ati definit un dreptunghi" );}}

Daca blocul are o singura instructiune atunci acoladele care incadreaza blocul de instructiuni pot lipsi. Blocul else poate sa lipseasca in intregime:Exemplu:

import java.util.Scanner;public class calcul_max {public static void main(String[] args) {//declaratii de variabile localefloat n1,n2,n3, maxim;Scanner intrare;intrare = new Scanner(System.in);//nr 1;System.out.print("numar 1 :");

n1 = intrare.nextFloat();System.out.print("numar 2 :");n2 = intrare.nextFloat();System.out.print("numar 3 ");n3 = intrare.nextFloat();maxim=n1;if(n2>maxim) maxim=n2;if(n3>maxim) maxim=n3;//afisare System.out.println("maxim dintre dintre "+n1+","+n2+","+n3+" este:"+maxim );}}

 

Calcul pentru aria unui triunghiimport java.util.Scanner;public class tringhi {public static void main(String[] args) {

double x,y,z,aria,p;Scanner intrare;intrare = new Scanner(System.in);//nr 1;System.out.print("numar 1 :");x = intrare.nextDouble();System.out.print("numar 2 :");y= intrare.nextDouble();System.out.print("numar 3 ");z = intrare.nextDouble();if (x<=0 || y<=0 || z<=0)System.out.println("Numerele introduse nu sunt laturi ale unui triunghi");elseif (x+y<=z || x+z<=y || y+z<=x)System.out.println("Numerele introduse nu sunt laturi ale unui triunghi");else{p = (x+y+z)/2;//aria=0;aria = Math.sqrt(p*(p-x)*(p-y)*(p-z));System.out.println("Aria triunghiului = " + aria);}}}

Instructiunea switch alege valoarea unei variabile de memorie in functie de valorile corespunzatoare la case.Ramura default este optionala si reprezinta setul de instructiuni ce se executa daca valoarea variabilei testate nu respecta niciunul dintre cazurile analizate.In general dupa fiecare caz trebuie pusa instructiunea break;Exemplu:

import java.util.Scanner;public class var_switch {

public static void main(String[] args) {//declaratii de variabile localeint nr_zi;Scanner intrare;intrare = new Scanner(System.in);//nr 1;System.out.print("definit nunarul zilei valori intre 1-7 :");nr_zi = intrare.nextInt(); switch(nr_zi){ case 1: System.out.println("luni"); break;

case 2: System.out.println("marti"); break; case 3: System.out.println("miercuri"); break; case 4: System.out.println("joi"); break; case 5: System.out.println("vineri"); break; case 6: System.out.println("sambata"); break; case 7: System.out.println("duminica"); default :System.out.println("valori intre 1-7!!!eroare");} } }  Varianta cu stringimport java.util.Scanner;public class var_switch_c {

public static void main(String[] args) {//declaratii de variabile localeString nr_zi;Scanner intrare;intrare = new Scanner(System.in);//nr 1;System.out.print("definit nunarul zilei valori intre 1-7 :");nr_zi = intrare.nextLine();switch(nr_zi){ case "1": System.out.println("luni"); break; case "2": System.out.println("marti"); break; case "3": System.out.println("miercuri"); break; case "4": System.out.println("joi"); break; case "5": System.out.println("vineri"); break; case "6": System.out.println("sambata"); break; case "7": System.out.println("duminica"); default :System.out.println("valori intre 1-7!!!eroare");}} } Structuri de control repetitive while, do-while si for while(conditie){//instructiuni}

Exemplu:

public class ins_repet { public static void main (String arg[]) {int nr=5,suma=0,i=0;

while(i<=nr){suma+=i;i++;} System.out.println("suma premelor "+nr+" numere este :"+suma); } }

Exemplu:

import javax.swing.JOptionPane;public class Media {public static void main(String[] args) {int total;int contorStudent;int notaStudent;double mediaClasa;String sirNota;//initializaritotal = 0;contorStudent = 1;//totalul mediilor individualewhile (contorStudent <= 5) {sirNota = JOptionPane.showInputDialog("Nota pentru student " + contorStudent);notaStudent = Integer.parseInt(sirNota);// sunt scrieri alternative ale instructiunilortotal = total + notaStudent; //total+=notaStudent;contorStudent= contorStudent +1; //++contorStudent;}//calcul medie clasamediaClasa = total / 5.;//afisare rezultatJOptionPane.showMessageDialog(null, "Media grupei este: " + mediaClasa);}}

Structura do-while functioneaza similar cu while. Diferenta este ca do-while este post-conditionata. Daca in cazul structurii while se testeaza mai intai conditia iar apoi se executa instructiunile daca conditia este adevarata, in cazul structurii do-while intai se executa primul set de instructiuni iar apoi se verifica conditia.

Exemplu:public class ins_repet { public static void main (String arg[]) {int nr=3,suma=0,i=0;do{suma+=i;

i++;} while (i<=nr); System.out.println("suma premelor "+nr+" numere este :"+suma); } }Structura for este folosita in general pentru repetari de instructiuni de un numar fix de ori sau pentru parcurgerea unor intervale de valori.Exemplupublic class ins_repet { public static void main (String arg[]) {int nr=3,suma,i;

//for(;i<=nr;i++) {suma+=i;} for(i=0,suma=0;i<=nr;i++) {suma+=i;} System.out.println("suma premelor "+nr+" numere este :"+suma); } } Exemplu cu forimport java.util.*;public class factorial {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.print("n: ");int n = in.nextInt();long fact = 1;for(int i = 1; i<=n ; ++i)fact=fact*i; //sau fact*=i;System.out.println(n+"! = "+fact);}}ATENTIE:

Observati ca valoarea lui 1000! nu se mai poate reprezenta folosind tipul long. Daca precizia sau domeniul de valori a tipurilor întregi sau reale nu sunt suficiente în Java se pot folosi clasele BigInteger sau BigDecimal din pachetul java.math. Aceste sunt create pentru manipularea unor valori numerice arbitrar de mari. Aplicatia anterioara a fost rescrisa folosind în locul lui long pe BigInteger. Aici, crearea unei valori de tipul BigInteger se face cu BigInteger.valueOf(valoare). Operatorii matematici sunt înlocuiti cu metode, pentru * se va folosi multiply.

import java.math.BigInteger;import java.util.*;public class FactorialB {

public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.print("n: ");int n = in.nextInt();BigInteger fact = BigInteger.valueOf(1);for(int i=1; i<=n ; ++i)fact = fact.multiply(BigInteger.valueOf(i)); //fact = fact * i;System.out.println(n + "! = " + fact);}}

Variabile sau Constante De obicei zonele de memorie pe care le folosim sunt variabile. Exista necesitatea uneori de zone de memorie carora sa nu li se schimbe valoarea pe parcursul executiei programului. Pentru acest caz, marcam aceste zone de memorie folosind un cuvant cheie cu valoarea de modificator: final;

Daca o zona de memorie la declarare este final atunci aceasta este constanta si odata atribuita o valoare acestei zone de memoria, valoarea atribuita nu mai poate fi modificata pe parcursul executiei programului.final indica faptul ca valoarea variabilei nu mai poate fi schimbata, cu alte cuvinte este folosit pentru declararea constantelor. final double PI = 3.14 ;

Exemplu

public class constante { public static void main (String arg[]) {final int a=2,test;int b=a+10; test=a; //test=a+5; eroare System.out.println("a: "+a+" b: "+b+"si test ="+test); } } 

Operatori unari

 Exemple de operatori unari:

++ de incrementare -- de decrementare += de adunare la -= de scadere din *= inmultire cu /= impartire cu

Pentru operatorii unari avem nevoie de o singura variabila cu care se opereaza. Operatorii de incrementare/ decrementare pot si postfixati sau prefixati. In cazul in care sunt prefixati (adica pusi inaintea variabilei cu care se opereaza) atunci au prioritate in fata altor operatii care se executa, daca sunt postfixati (pusi dupa variabila cu care se opereaza) atunci operatia de inrementare/decrementare se face dupa o alta operatie. Exemplu.public class operatori_unari { public static void main (String arg[]) { int a; int b; a=1; b=5; a=2 * b++; System.out.println("a -:"+a+" b :"+b); } }

 Structuri de control imbricate Notiunea de structuri de control imbricate reprezinta folosirea structurilor de control ca instructiuni ale unei alte structuri de control. Orice structura de control este o instructiune si poate fi, prin urmare, pusa intre acoladele unei alte structuri de control.Exemplu:public class str_imbr { public static void main(String[] args) { int nr=4; while(nr>0) {if(nr>2) System.out.println("---"+nr);for(int k=0;k<nr;k++) System.out.println(k);System.out.println("--------------"); nr--;}

}}

 Erori Intotdeauna exista posibilitatea de a intalni erori in scrierea programelor. In general datorita neatentiei puteti intampina urmatoarele tipuri de erori:

de sintaxa de logica

Erorile de sintaxa sunt erori ce apar ca urmare a scrierii unei sintaxe gresite. Nerespectarea oricarei reguli de sintaxa duce la o eroare de compilare. Practic la intampinarea oricarei erori de sintaxa programul nu va compila. Mediul de programare indica linia pe care apare eroarea si rolul programatorului este de a o corecta.

Tablouri

Clasificam tablourile dupa numarul lor de dimensiuni: unidimensionale - vectori bidimensionale - matrice pluridimensionaleDesi un tabloul este un obiect, nu exista o clasa de tipul tablou. Java creeaza automat o clasa pentru fiecare tablou de tipuri primitive sau de clase. Pentru a aflanumarul de elemente dintr-un tablou folosim notatia nume_tablou.length

Pentru a putea utiliza un tablou cu tipul de baza dintre cele primitive trebuie sa: declaram o variabila de tipul tablou având nume_tablou, ce v-a stoca o referinta catre

tablou prin: tip [] nume_tablou; sau tip nume_tablou []; în acest moment nume_tablou se initializeaza cu valoarea speciala null; aceasta valoare se modifica la adresarea tabloului dupa utilizarea operatorului new;

cream tabloul folosind operatorul new specificând lungimea acestuia (numarul maxim de elemente pe care îl poate stoca); lungimea trebuie sa fie o valoare întreaga de tipul int (constanta sau expresie care se calculeaza în momentul rularii aplicatiei)

initializam tabloul cu valori diferite de cele cu care acesta se init-ializaeza implicit de catre Java.

Tablouri unidimensionale:

Fiecare element al acestei structuri este identificat pintr-un index de tip int. Indecsii incep de la valoarea 0 si sunt crescatori, astfel ca ultimul index al unui tablou va avea intotdeauna valoarea lungimii tabloului minus unu.

Parcurgerea unui vector se poate face folosind o structura repetitva for, deoarece indecsii se gasesc intotdeauna intr-un interval continuu de numere.

Cum variabila i ia valori intre 0 si 99 aceasta ia pe rand toate valorile indecsilor. Astfel ca fiecare variabila a tabloului in cazul de mai sus este instantiata cu exact valoare indexului care o reprezinta. Accesul la elementele tablourilor

Exempluimport java.util.Scanner;public class tablou{public static void main(String[] args) {final int NRELEM = 5; //lungimea tabloului

int [] a; //declararea tablouluiScanner intrare;String iesire = "Indice\tValoarea element\n";System.out.println(iesire);intrare = new Scanner(System.in);a = new int[NRELEM]; //crearea tabloului;//citire elemente tabloufor(int i = 0; i < a.length;++i) {System.out.print("a[" + i +"] = ");a[i]= intrare.nextInt();}// afisare simpla de elemente tabloufor(int i = 0; i < a.length;++i)System.out.println(a[i]);} }

Exemplu – operatii cu siruri:

Tablouri bidimensionale: pot fi considerate vectori de vectori au doua dimensiuni cu lungime proprie fiecare dimensiune este indexata incepand cu valoare 0 intervalul indecsilor este intre 0 si lungimea – 1 Deoarece o matrice are doua dimensiuni parcurgerea se poate face folosind doua structuri

de control for imbricate.

public class matrice { public static void main(String args[]){ int [][] m= new int[2][5];//definire matrice //parcurgere si initializare for(int i=0;i<m.length;i++) for(int j=0;j<m[i].length;j++) m[i][j]=i+j; //afisare for(int i=0;i<m.length;i++) { for(int j=0;j<m[i].length;j++) System.out.print("m["+i+"]["+j+"]="+i+j+","); System.out.println("-----"); } } }

Enhanced for loop in Java: As of Java 5, the enhanced for loop was introduced. This is mainly used for Arrays.Syntax: The syntax of enhanced for loop is: for(declaration : expression) { //Statements } Declaration: The newly declared block variable, which is of a type compatible with the elements of the array you are accessing. The variable will be available within the for block and its value would be the same as the current array element. Expression: This evaluates to the array you need to loop through. The expression can be an array variable or method call that returns an array

public class Test{ public static void main(String args[]) { int[] numbers ={10,20,30,40,50}; for(int x : numbers ) { System.out.print(x); System.out.print(","); } System.out.print("\n"); String[] names ={"Nume 1","Nume 2","Nume 3","Nume 4","Nume 5"}; for(String name : names ) { System.out.print( name +","); } } }

Exemplu folosind break;

Exemplu folosind continue;

break si continue etichetate! se utilizeaza în cazul ciclurilor imbricate! permit saltul în afara ciclului curent! eticheta este un nume dat instructiunii în care se va realiza saltul

Exemplu:afara1:for (j=0; j<=3; ++j) {afara2:for (k=0; k<=3; ++k) {if (j+k <= 1) {System.out.println(j + " " + k + " > break");break afara2;}if (j+k >= 5) {System.out.println(j + " " + k +" > continue");continue afara1;

}if (k == 0)continue afara2;System.out.println(j + " / " + k + " = " + (double)(j/k));} //for(k= ...}//for(j=...

Posibilitatea scrierii unor cicluri imbricate pune problema iesirii definitive dintr-o astfel de situatie sau de continuare a ciclului în care ciclul curent este imbricat. break si continue pot fi utilizate cu etichete. Acestea pot marca punctele de parasire sau de reluare la nivelul ciclurilor. În cazul lui break saltul se va face la prima instructiune urmatoare etichetei. Pentru continue saltul se face la urmatoarea itera-tie a ciclului marcat prin eticheta. Desi break si continue sunt utile în cazul ciclurilor imbricate, folosirea lor este de evitat prin regândirea logicii ciclurilor în care participa. Folosirea intensiva a acestora va conduce la un cod neclar s-i greu de depanat.

http://www.cs.uic.edu/~sloan/CLASSES/java/Very Simple Java Example Programs

HelloWorld.java HelloDate.java FunctionCall.java

Array usage in Java A tutorial on using arrays in java ArrayDemo.java

Exception examples in Java HelloWorldException.java KeyboardReaderError.java DivBy0.java

Exceptiile sunt instante (obiecte) ale clasei java.lang.Exception si ale sublcaselor acesteia. Subclasele clasei Exception pot contine informatii speciale despre un anumit tip de exceptie si un comportament adecvat. Exceptia cea mai importanta este definita de clasa java.lang.IOException cu subclase speciale pentru diferite probleme I/O  cum ar fi FileNotFoundException respectiv SocketException.

Un obiect  Exception este creat de catre cod in momentul cand au aparut conditiile pentru o eroare. Obiectul de tip exceptie este transmis impreuna cu controlul executiei catre codul de tratare a exceptiei. In continuare vom prezenta exceptiile di cadrul pachetului java.lang impreuna cu ierarhia de clase din care fac parte. In general avem doua tipuri de exceptii si acestea sunt repezentate de subclasele clasei Throwable Exception si Error.Cele de tip Error si RuntimeException sunt generate de mediul de executie. Ecxeptiile de tip Error sunt generate de asemenea de catre mediul de executie, dar acestea nu pot fi prinse de program. De exemplu masina virtuala Java nu are memorie suficienta. java.lang.Exception1. Object    1.1. Throwable            1.1.1. Exception                    1.1.1.1. ClassNotFoundException                    1.1.1.2. CloneNotSupportedException                    1.1.1.3. IllegalAccessException                    1.1.1.4. InstantiationException                    1.1.1.5. InterruptedException                    1.1.1.6. NoSuchMethodException                    1.1.1.7. RuntimeException                        1.1.1.7.1. ArithmeticException                        1.1.1.7.2. ArrayStoreException                        1.1.1.7.3. ClassCastException                        1.1.1.7.4. IllegalArgumentException                            1.1.1.7.4.1. IllegalThreadStateException                            1.1.1.7.4.2. NumberFormatException                        1.1.1.7.5. IllegalMonitorStateException                        1.1.1.7.6. IllegalStateException                        1.1.1.7.7. IndexOutOfBoundsException                            1.1.1.7.7.1. ArrayIndexOutOfBoundsException                            1.1.1.7.7.2. StringIndexOutOfBoundsException                        1.1.1.7.8. NegativeArraySizeException                        1.1.1.7.9. NullPointerException                        1.1.1.7.10. SecurityExceptionjava.lang.Error1. Object        1.1. Throwable                1.1.1 Error                        1.1.1.1. LinkageError                                1.1.1.1.1. ClassCircularityError                                1.1.1.1.2. ClassFormatError                                1.1.1.1.3. ExceptionInitializerError                                1.1.1.1.4. IncompatibleClassChangeError                                        1.1.1.1.4.1. AbstractMethodError                                        1.1.1.1.4.2. IllegalAccessError                                        1.1.1.1.4.3. InstantiationError                                        1.1.1.1.4.4. NoSuchFieldError                                        1.1.1.1.4.5. NoSuchMethodError                                1.1.1.1.5. NoClassDefFoundError                                1.1.1.1.6. UnsatisfiedLinkError                                1.1.1.1.7. VerifyError                        1.1.1.2. ThreadDeath                        1.1.1.3. VirtulaMachineError