Introducere n Java Ce este Java ?
? Primul program Structura lexical a Tipuri de date Variabile Controlul execut iei Vectori S iruri de caractere Argumente de la linia de comanda a
Ce este Java ? Limbaj de programare Platform a de lucru Sun Microsystems 1995 James Gosling Duke
Limbajul de programare Java Simplitate U surint a n crearea de aplicat ii complexe Robustet e - pointeri, administrarea automat a a memoriei, GC Complet orientat pe obiecte Securitate Neutralitate arhitectural a Portabililtate Compilat si interpretat Performant a Modelat dup aC si C++
Platforme de lucru Java J2SE (Standard Edition) Aplicat ii independente, appleturi, Java Web Start J2ME (Micro Edition) Programarea dispozitivelor mobile J2EE (Enterprise Edition) Aplicat ii complexe, pe mai multe nivele pentru sisteme eterogene, cu baze de date distribuite, etc. Aplicat ii si servicii Web: servleturi, pagini JSP, etc. Distribut iile Java sunt oferite gratuit http://java.sun.com J2SE 1.5 SDK (Tiger)
Compilat si interpretat Limbajele de programare: Interpretate + : simplitate, portabilitate - : viteza de execut ie redus a Compilate + : execut ia extrem de rapid a - : lipsa portabilit a tii Java: compilat + interpretat Compilator: surse - cod de octet i Interpretor: execut a codul de octet i Cod octet i = Cod ma sin a Cod ma sin a - procesor Cod octet i - JVM JVM = Java Virtual Machine
5
Primul program 1. Scriererea codului surs a
class FirstApp { public static void main( String args[]) { System.out.println("Hello world!"); } }
2. Salvarea sierelor surs a
C:\intro\FirstApp.java
3. Compilarea aplicat iei javac FirstApp.java va rezulta: FirstApp.class 4. Rularea aplicat iei java FirstApp
6
Structura lexical a Setul de caractere: Unicode nlocuie ste ASCII Un caracter se reprezint a pe 2 octet i Cont ine 65536 de semne Compatibil ASCII : primele 256 caractere sunt cele din ASCII Este structurat n blocuri: Basic Latin, Greek, Arabic, Gothic, Currency, Mathematical, Arrows, Musical, etc. \uxxxx \u03B1 - \u03C9: http://www.unicode.org
7
Cuvinte cheie Cuvintele rezervate sunt, cu c ateva except ii, cele din C++.
abstract boolean break byte case catch char class const* continue default do double else extends final finally float for goto* if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
Incep and cu 1.5: enum.
Literali Intregi (10, 16 -0x, 8-0) Flotant i: 1.0, 2e2, 3f, 4D Logici: true, false Caracter: J, a, v, a, \n S iruri de caractere: Duke
Separatori () [];,.
Operatori atribuirea: = matematici: +, -, *, /, %, ++, -lval op= rval: x += 2 n -= 3 x++, ++x, n--, --n logici: &&(and), ||(or), !(not) relat ionali: <, <=, >, <=, ==, != pe bit i: &(and), |(or), ^ (xor), ~ (not) de translat ie: <<, >>, >>> (shift la dreapta f ar a semn) if-else: expresie-logica ? : val-false
10
val-true
operatorul , (virgul a) folosit pentru evaluarea secvent ial a a operat iilor: int x=0, y=1, z=2; operatorul + pentru concatenarea sirurilor
String s1="Ana"; String s2="mere"; int x=10; System.out.println(s1 + " are " + x + " " + s2);
operatori pentru conversii (cast) : (tip-de-data)
int a = (int)a; char c = (char)96; int i = 200; long l = (long)i; //widening conversion long l2 = (long)200; int i2 = (int)l2; //narrowing conversion
11
Comentarii Exist a trei feluri de comentarii: Comentarii pe mai multe linii, nchise ntre /* si */. Comentarii pe mai multe linii care tin de documentat ie, nchise ntre /** si */. Textul dintre cele dou a secvent e este automat mutat n documentat ia aplicat iei de c atre generatorul automat de documentat ie javadoc. Comentarii pe o singur a linie, care incep cu //.
12
Tipuri de date Tipuri primitive - Tipuri referint a. Tipurile primitive sunt: aritmetice ntregi: byte (1 octet), short (2), int (4), long (8) reale: float (4), double (8) caracter: char (2) logic: boolean (true si false) Vectorii, clasele si interfet ele sunt tipuri referint a. Nu exist a: pointer, struct si union.
13
Variabile Declararea variabilelor: Tip numeVariabila; Init ializarea variabilelor: Tip numeVariabila = valoare; Declararea constantelor: final Tip numeVariabila;
final double PI = 3.14; int valoare = 100; long numarElemente = 12345678L; String bauturaMeaPreferata = "apa";
a. Variabile membre b. Parametri metodelor c. Variabile locale, declarate ntr-o metod a d. Variabile locale, declarate ntr-un bloc e. Parametrii de la tratarea except iilor
14
class Exemplu { int a; public void metoda(int b) { a = b; int c = 10; for(int d=0; d < 10; d++) { c --; } try { a = b/c; } catch(ArithmeticException e) { System.err.println(e.getMessage()); } } }
15
Controlul execut iei Instruct iuni de decizie: if-else, switch-case Instruct iuni de salt: for, while, do-while Instruct iuni pentru tratarea except iilor: try-catch-finally, throw Alte instruct iuni: break, continue, return, label:
16
Instruct iuni de decizie if-else
if (expresie-logica) { ... } if (expresie-logica) { ... } else { ... }
switch-case
switch (variabila) { case valoare1: ... break; case valoare2: ... break; default: ... }
17
Instruct iuni de salt for
for(initializare; expresie-logica; pas-iteratie) { //Corpul buclei } for(int i=0, j=100 ; i < 100 && j > 0; i++, j--) { ... }
while
while (expresie-logica) { ... }
do-while
do { ... } while (expresie-logica);
18
Alte instruct iuni break continue return [valoare] numeEticheta: Nu exist a goto Pot denite etichete folosite astfel: break numeEticheata continue numeEticheta
19
Exemplu de folosire a etichetelor
i=0; eticheta: while (i < 10) { System.out.println("i="+i); j=0; while (j < 10) { j++; if (j==5) continue eticheta; if (j==7) break eticheta; System.out.println("j="+j); } i++; }
20
Vectori Declararea Tip[] numeVector; sau Tip numeVector[]; Instant ierea numeVector = new Tip[nrElemente]; Init ializarea (opt ional)
String culori[] = {"Rosu", "Galben"}; v = new int[10]; //aloca spatiu pentru 10 intregi: 40 octeti c = new char[10]; //aloca spatiu pentru 10 caractere: 20 octeti
Declararea si instant ierea pot f acute simultan:
Tip[] numeVector = new Tip[nrElemente];
21
Tablouri multidimensionale Tablou multidimensiona = vector de vectori.
Tip matrice[][] = new Tip[nrLinii][nrColoane]; matrice[i] este linia i a matricii si reprezinta un vector cu nrColoane elemente iar matrice[i][j] este elementul de pe linia i si coloana j .
Dimensiunea unui vector Variabila length:
int []a = new int[5]; // a.length are valoarea 5 int m[][] = new int[5][10]; // m[0].length are valoarea 10
22
Copierea vectorilor
int a[] = {1, 2, 3, 4}; int b[] = new int[4]; // Varianta 1 for(int i=0; i<a.length; i++) b[i] = a[i]; // Varianta 2 System.arraycopy(a, 0, b, 0, a.length); // Nu are efectul dorit b = a;
23
Sortarea vectorilor - clasa Arrays Metode din java.util.Arrays: sort - (QuickSort -O(n log (n)))
int v[]={3, 1, 4, 2}; java.util.Arrays.sort(v); // Sorteaza vectorul v // Acesta va deveni {1, 2, 3, 4}
binarySearch equals ll Vectori cu dimensiune variabil a si eterogeni: Vector, ArrayList, etc. din pachetul java.util.
24
S iruri de caractere char[] String StringBuer
String s = "abc"; String s = new String("abc"); char data[] = {a, b, c}; String s = new String(data);
Concatenarea: +
String s1 = "ab" + "cd"; String s2 = s1 + 123 + "xyz"
Testarea egalit a tii: equals
if (nume.equals("duke")) { ... }
25
Argumente de la linia de comand a Trimiterea argumentelor
java NumeAplicatie [arg0 arg1 . . .] java Test Java "Hello Duke" 1.5
Primirea argumentelor
public static void main (String args[]) /* args[0] va fi primul argument trimis: "Java" args[1] va fi urmatorul argument: "Hello Duke" ... */
Num arul argumentelor
public static void main (String args[]) { int numarArgumente = args.length ; }
26
Exemplu
public class Salut { public static void main (String args[]) { if (args.length == 0) { System.out.println( "Numar insuficient de argumente!"); System.exit(-1); //termina aplicatia } String nume = args[0]; //exista sigur String prenume; if (args.length >= 1) prenume = args[1]; else prenume = ""; //valoare implicita System.out.println("Salut " + nume + " " + prenume); } }
27
A sarea argumentelor
public class Afisare { public static void main (String[] args) { for (int i = 0; i < args.length; i++) System.out.println(args[i]); } }
java Asare Hello Java
Hello Java
java Asare Hello Java
Hello Java
28
Argumente numerice Argumentele de la linia de comand a sunt siruri de caractere Transformarea sir - num ar se face cu metode de tipul: Integer.parseInt Double.parseDouble Float.parseFloat ...
public class Power { public static void main(String args[]) { double numar = Double.parseDouble(args[0]); int putere = Integer.parseInt(args[1]); System.out.println("Rezultat=" + Math.pow(numar, putere)); } }
29
Adrese utile www.java.com Toat a lumea www.java.net Comunitate java.sun.com Dezvoltatori jguru.com Cursuri jars.com Resurse javaworld.com, javareport.com Articole javaalmanac.com Exemple de cod google:java
30