Explicați conceptul de tipuri de referință în Java și în ce constau diferențele față de tipurile primitive.
sobes.tech AI
Răspuns de la AI
În Java, există două tipuri principale de date: primitive și referință.
Tipurile primitive (de exemplu, int, boolean, double) stochează valorile direct. Ele ocupă o dimensiune fixă în memorie și sunt transmise prin valoare. De exemplu, la atribuirea unei variabile către alta, se copiază valoarea în sine.
Tipurile de referință sunt obiecte și array-uri. O variabilă de tip de referință stochează nu valoarea obiectului în sine, ci o referință (adresa) către zona de memorie unde se află obiectul. La atribuirea unei variabile de referință către alta, se copiază referința, nu obiectul. Asta înseamnă că ambele variabile vor indica același obiect.
Exemplu:
int a = 5;
int b = a; // se copiază valoarea 5
b = 10; // a va rămâne 5
String s1 = new String("hello");
String s2 = s1; // se copiază referința către obiect
s2 = "world"; // s1 va rămâne "hello", deoarece String este imutabil
Prin urmare, diferența principală constă în modul de stocare și transmitere a datelor: primitivele stochează valorile direct, în timp ce tipurile de referință stochează referințe către obiecte în memorie.