Sobes.tech
Junior — Middle

Cum se disting tipurile de date primitive de cele referențiale în programare?

sobes.tech AI

Răspuns de la AI

Tipurile de date primitive (de exemplu, int, float, boolean, char în Java sau number, boolean, string în JavaScript) stochează valorile direct și au de obicei o dimensiune fixă. La atribuirea sau transmiterea tipurilor primitive, valoarea în sine este copiată.

Tipurile de referință (de exemplu, obiecte, array-uri, clase) stochează o referință (pointer) către zona de memorie unde se află datele. La atribuirea sau transmiterea unui tip de referință, doar referința este copiată, nu datele în sine, astfel încât modificările făcute printr-o referință se reflectă în toate celelalte.

Exemplu în JavaScript:

let a = 5; // primitiv
let b = a; // valoarea este copiată
b = 10;
console.log(a); // 5 - originalul nu s-a schimbat

let obj1 = {name: 'Alice'}; // tip de referință
let obj2 = obj1; // referința este copiată
obj2.name = 'Bob';
console.log(obj1.name); // 'Bob' - obiectul s-a schimbat printr-o altă referință

Prin urmare, diferența principală este că primitivele stochează valorile direct, în timp ce tipurile de referință stochează adrese către datele din memorie.