Обяснете концепцията за референтните типове в езика 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 е неизменяем
Следователно, основната разлика е в начина на съхранение и предаване на данните: примитивите съхраняват стойностите директно, а референтните типове — референции към обекти в паметта.