![Page 1: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/1.jpg)
1
Structuri de Date în JAVA (II)
● Programarea orientată obiect în Java● Clasă. Variabile membre. Crearea obiectelor● Tipuri primitive. Constructori. Metode● Controlul execuţiei● Vectori. Probleme la utilizarea obiectelor● Pachete. Reglementarea accesului● Variabile. Referinţe● Variabile membre statice. Metode statice● Domeniu de existenţă
![Page 2: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/2.jpg)
2
Programarea Orientată Obiect
● Obiectele au stare● o persoană este un obiect caracterizată de
nume, vârstă, CNP● Programatorii cheamă metodele obiectelor
pentru a realiza calcule şi a modifica această stare
● programator: ce vârstă ai?● obiect: am 22● programator: azi e ziua ta!● obiect: atunci îmi incrementez vârsta cu 1
![Page 3: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/3.jpg)
3
Un program JAVA
package hello;import java.util.System;class HelloWorld {
String myString;void shout () {
myString = new String (“Hello world”);System.out.println (myString);
}
public static void main (String[] args) {HelloWorld myHelloWorld = new HelloWorld ();myHelloWorld.shout ();
}}
![Page 4: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/4.jpg)
4
Clasă● Şablon pentru generarea obiectelor● Java e un limbaj orientat obiect, deci orice este o clasă
class HelloWorld { // numele clasei
... <definiţii de metode şi variabile membre> ...
}
![Page 5: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/5.jpg)
5
Variabilă membră
● Descrie starea obiectului
class Human {int age;
}
<tipul clasei> <numele variabilei>;
![Page 6: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/6.jpg)
6
Crearea obiectelor
Human bob = new Human ();
● Crearea obiectelor se face cu operatorul “new”● Obiectul = instanţă a clasei● bob este o referinţă la obiect (adresă)● Se asignează obiectul construit variabilei bob
<tip> <nume variabilă> = <obiect nou>;
![Page 7: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/7.jpg)
7
22
● De ce nu a trebuit să scriem
bob.age = new int (22); ??
![Page 8: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/8.jpg)
8
Tipuri primitive
● Nu orice este un obiect
● Unele lucruri sunt prea simple şi prea frecvent utilizate ca să le considerăm obiecte:
● boolean, short, byte, int, long, double, float, char
![Page 9: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/9.jpg)
9
Clase wrapper
● Tipurile primitive nu sunt clase derivate din clasa Object● Pentru a le trata similar cu obiectele le asociem clase● Clasa asociată unui tip primitiv se numeşte clasă wrapper
Constructor Accesor methodByte public Byte(byte value) public byte byteValue ()Short public Short(short value) public short shortValue()Integer public Integer(int value) public int intValue ()Long public Long(long value) public long longValue ()Float public Float(float value) public float floatValue ()Double public Double(double value) public double doubleValue ()Character public Character(char value) public char charValue ()Boolean public Boolean (boolean value) public boolean booleanValue ()
Wrapper class
![Page 10: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/10.jpg)
10
Folosirea claselor wrapper
int i = 42;int j;Integer example = new Integer (i); // example copiaza valoarea 42j = example.intValue (); // j este acum 42
Integer a = 2;Integer b = 12;Integer c = a + b; // este o absurditate;
// '+' nu se poate folosiint r = a.intValue () + b.intValue ();Integer d = new Integer (r); // varianta corectă
![Page 11: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/11.jpg)
11
Variabila membră myString
package hello;import java.util.System;class HelloWorld {
String myString;void shout () {
myString = new String (“Hello world”);System.out.println (myString);
}
public static void main (String[] args) {HelloWorld myHelloWorld = new HelloWorld ();myHelloWorld.shout ();
}}
![Page 12: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/12.jpg)
12
Metode
● Procesează starea obiectului
<tip returnat> <numele metodei> ( <parametri> ) {<corpul metodei>
}
myHelloWorld.shout ();// se foloseşte '.' pentru a accesa metoda
![Page 13: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/13.jpg)
13
Constructori
● Constructorii sunt metode speciale
● nu au tip returnat● se folosesc pentru a iniţializa variabilele
membre● primesc parametri, au corp al metodei, dar nu
au return
![Page 14: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/14.jpg)
14
Corpul metodei
String firstname (String fullname) {int space = fullname.indexOf (“ “);String word = fullname.substring (0, space);return word;
}
● oricâţi parametri● declară variabile locale● returnează un singur lucru (void = nu întorc nimic)
![Page 15: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/15.jpg)
15
Diferenţa între declaraţie şi definiţie// declarare variabilă c ca referinţă de tip clasă CutieCutie c; // variabila c are valoarea null...c = new Cutie (); // de-abia aici s-a creat obiectul
● Toate variabilele declarate au implicit valoarea 0● Referinţele se iniţializează tot cu 0 (null)● Dacă folosim o referinţă ne-creeată încă se va arunca o excepţie NullPointerException
![Page 16: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/16.jpg)
16
Cutie a;Cutie b;
a = new Cutie ();a.deschide ();
b = a;
b.deschide ();
nullCutie a Cutie b null
Cutie a Cutie b null
Cutie a Cutie b
Cutie a Cutie b
![Page 17: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/17.jpg)
17
Controlul execuţiei
if (bob.age < 21) { if (predicat) {// nu efectuează ...
} else if (bob.hasCard ()) { } else if (predicat2) {// fă altceva ...
} else { } else if (predicat3) {// în rest ...
} } else if (predicatN) {...
} else { ... }
![Page 18: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/18.jpg)
18
Predicate
● Predicatele se evaluează fie la true fie la false (boolean)
● <, >, ==, <=, >=, !
box.isEmpty ()box.numberBooks () == 0!(box.numberBook () > 1)box.numberBooks () != MAX_NUMBER_BOOKS
![Page 19: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/19.jpg)
19
Bucla for
for (int i = 0 ; i < 3 ; i ++) {System.out.println (i); // tipăreşte 0 1 2
}
for (<iniţializare> ; <predicat> ; <incrementare> ) {se execută de fiecare datăo singură dată
Oprirea se face în momentul când predicatul devine false.
![Page 20: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/20.jpg)
20
Bucla while
int i = 0;while (i < 3) {
System.out.println (i);i = i + 1;
}
while (<predicat>) {...
}
![Page 21: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/21.jpg)
21
Combinarea predicatelor
● && este ŞI logic● || este SAU logic
a. bob.age >= 21 && bob.hasCard ()b. !someone.name.equals(“Bob”)c. (!true || false) && true
![Page 22: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/22.jpg)
22
Vectori
● Vectorii sunt tot obiecte, dar speciale, precum tipurile primitive
String [] pets = new String [2];pets[0] = new String (“Fluffy”);pets[1] = “Spot”; // şirul există deja
String[] pets = new String [] {“Fluffy”, “Spot”};System.out.println (pets.length); // afişează 2
![Page 23: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/23.jpg)
23
Câte tipuri avem ?
● Primitive● int a = 3 + 5;
● Obiecte● Integer a = new Integer (3);● Integer sum = a.add (5);● Vectori
![Page 24: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/24.jpg)
24
Obiectele pot cauza probleme!
● pets[3] >> programul se opreşte, se aruncă excepţia ArrayOutOfBounds
● String[] str;● str.length >> oprire, aruncă NullPointerException
● Integer a = new Integer (3); // a primeşte 3● a.add (5); // a rămâne 3● a = a.add (5); // a primeşte 8
![Page 25: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/25.jpg)
25
Packages (pachete)● pachet – asamblează împreună mai multe clase (fişiere .java)● numele pachetului – domeniu Internet ce prefixează numele
ales, de exemplu: edu.colorado.simulations
package ro.unitbv.vega;/home/user/classes
ro unitbv
vega fişiere .java fişiere .class
export CLASSPATH=$CLASSPATH:/home/user/classes
![Page 26: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/26.jpg)
26
// Fisierul: Cutie.java// declararea pachetuluipackage ro.unitbv.vega;public class Cutie // această clasă se vede în afara{ // pachetului
// ...}
// Fisierul: TestCutie.java// declaratie de import pentru toate clasele pachetuluiimport ro.unitbv.vega.*;// sau pentru o singura clasa:// import ro.unitbv.vega.cutie;
Declararea şi folosirea pachetelor
![Page 27: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/27.jpg)
27
● pachetul java.lang este importat implicit (de exemplu, aici se află declarat obiectul System)
● tipuri de acces➔ acces public (clasă şi pachet)➔ acces private (doar în clasă)➔ acces package (pachet) – nu se specifică nimic înainte de
cuvântul cheie class; clasa nu mai este vizibilă în exterior, ci numai claselor din interiorul pachetului
➔ acces protected (folosit pentru extinderea obiectelor – moştenire)
Pachete şi reglementarea accesului
![Page 28: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/28.jpg)
28
Variabile şi alocarea lor
public class AssignmentReview {public static void main (String[] args) {
Integer num;num = new Integer (3);Integer x = num;Integer y = new Integer (3);Integer z;
}}
![Page 29: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/29.jpg)
29
Java heap
Heap-ul este o zonă de date unde se stochează referinţele şi obiectele în timpul rulării
num x y z
Integer:3
Integer:3 null
![Page 30: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/30.jpg)
30
Referinţe null● Referinţele neiniţializate sunt 0 (null, adică
referire spre adresa 0)● Se foloseşte operatorul '=' pentru a asigna un
obiect unei referinţe● null nu este un obiect (nu are metode şi nici
variabile membre)● Unele metode pot modifica obiectul● Un singur obiect poate avea mai multe referinţe,
atenţie la efectele colaterale ● z.intValue () generează o eroare
(mai exact, NullPointerException)
![Page 31: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/31.jpg)
31
Tipuri referinţă
● Cunoscute sub denumirea de Objects● O instanţă a unui obiect se creează folosind new● Cuvântul cheie new:
1.Alocă spaţiu de memorie pentru obiect2.Cheamă constructorul specificat după new3.Întoarce o referinţă la noul obiect creat
![Page 32: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/32.jpg)
32
Static vs. ne-static
● Variabilele membre şi metodele pot fi declarate “static”
● Membrii statici aparţin de clasă
● O variabilă membru statică este comună pentru toate instanţele clasei (toate obiectele de acel tip)
● Membrii ne-statici aparţin instanţelor clasei
![Page 33: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/33.jpg)
33
Variabile membre ne-staticepublic class Bean {
public int beanCounter = 0;public Bean () {
beanCounter ++;}
public static void main (String[] args) {new Bean (); new Bean ();Bean bean = new Bean ();System.out.println (bean.beanCounter);// afişează 1
}}
![Page 34: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/34.jpg)
34
Variabile membre staticepublic class Bean {
public static int beanCounter = 0;public Bean () {
beanCounter ++;}
public static void main (String[] args) {new Bean (); new Bean ();new Bean ();System.out.println (Bean.beanCounter);// afişează 3
}}
![Page 35: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/35.jpg)
35
Metode ne-statice
public class Bean {private boolean planted = false;public void plantBean () {
planted = true;}
public static void main (String[] args) {Bean bean = new Bean ();bean.plantBean (); // invocată la instanţă
}}
![Page 36: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/36.jpg)
36
Metode statice
public class Bean {private boolean planted = false;public static void plantBean (Bean bean) {
bean.planted = true;}
public static void main (String[] args) {Bean bean = new Bean ();Bean.plantBean (bean); // invocată la clasă// “bean.plantBean (bean);” e permis dar nerecomandat!
}}
![Page 37: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/37.jpg)
37
Referinţe
● Toate obiectele trimise ca parametri către o metodă sunt trimise ca referinţe!
● Referinţele au un domeniu de existenţă (scope)● Domeniul se defineşte cu acoladele { şi }● Referinţele există de la declararea lor şi până la
terminarea domeniului (acoladă închisă)● Variabilele membre pot fi referite în toată clasa● Parametrii pot fi referiţi în toată metoda
![Page 38: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/38.jpg)
38
Exemplu de domenii
public class ScopeExample {private int globalField;
public int method (int parameter) {int localVar1;if (globalField > 0) {
int x;}int localVar2;
}}
![Page 39: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/39.jpg)
39
Un alt exemplu de domenii
public class ScopeExample {private int globalField;
public int method (int parameter) {int globalField; // posibil, dar se pierde vizibilitatea!int localVar;if (this.globalField > 0) { // accesarea variabilei membre
int x;}int localVar; // declaraţie ilegală: acelaşi domeniu!
}}
![Page 40: Structuri de Date în JAVA (II)vega.unitbv.ro/~galmeanu/java/suport/curs-2/doc/java-curs-2.pdfStructuri de Date în JAVA (II) Programarea orientată obiect în Java Clasă. Variabile](https://reader030.vdocuments.pub/reader030/viewer/2022021610/5e262ad700e0553de97656cc/html5/thumbnails/40.jpg)
40
Precizia floating pointSystem.out.println (1.00 - .42);
// 0.6100000000000000001System.out.println (1.00 – 9 * .10);
// 0.0999999999999999995
● BigDecimal● De tip Object
● int sau longSe ţine cont de zecimale, de exemplu o sumă de o stocăm la
nivel de bani (nu direct lei)● Constante Double
● Double.POSITIVE_INFINITY● Double.NEGATIVE_INFINITY● Double.NaN (împărţire cu 0)