Sobes.tech
Junior — Middle

Обяснете концепцията за референтните типове в езика Java и в какво се различават от примитивните типове.

sobes.tech AI

Отговор от AI

В Java има два основни типа данни: примитивни и референтни.

Примитивни типове (например, int, boolean, double) съхраняват директно стойностите. Те заемат фиксиран размер памет и се предават по стойност. Например, при присвояване на една променлива на друга, самата стойност се копира.

Референтни типове са обекти и масиви. Променливата от референтен тип не съхранява стойността на обекта, а референция (адрес) към областта в паметта, където е разположен обектът. При присвояване на една референтна променлива на друга, се копира референцията, а не обектът. Това означава, че и двете променливи ще сочат към един и същи обект.

Пример:

int a = 5;
int b = a; // копира стойността 5
b = 10; // a ще остане 5

String s1 = new String("hello");
String s2 = s1; // копира референцията към обекта
s2 = "world"; // s1 ще остане "hello", тъй като String е неизменяем

Следователно, основната разлика е в начина на съхранение и предаване на данните: примитивите съхраняват стойностите директно, а референтните типове — референции към обекти в паметта.