Sobes.tech
Back to questions
Junior — Middle
85

Как отличить примитивные типы данных от ссылочных типов в программировании?

Companies where asked
ИннотехИннотех

Answer from AI

sobes.tech AI

Примитивные типы данных (например, int, float, boolean, char в Java или number, boolean, string в JavaScript) хранят непосредственно значения и обычно имеют фиксированный размер. При присваивании или передаче примитивных типов копируется само значение.

Ссылочные типы (например, объекты, массивы, классы) хранят ссылку (указатель) на область памяти, где находятся данные. При присваивании или передаче ссылочного типа копируется ссылка, а не сами данные, поэтому изменения через одну ссылку отражаются на всех остальных.

Пример на JavaScript:

let a = 5; // примитив
let b = a; // копируется значение
b = 10;
console.log(a); // 5 - оригинал не изменился

let obj1 = {name: 'Alice'}; // ссылочный тип
let obj2 = obj1; // копируется ссылка
obj2.name = 'Bob';
console.log(obj1.name); // 'Bob' - объект изменился через другую ссылку

Таким образом, главное отличие — примитивы хранят значения напрямую, а ссылочные типы — адреса на данные в памяти.