Wyjaśnij koncepcję typów referencyjnych w języku Java i czym różnią się od typów prymitywnych.
sobes.tech AI
Odpowiedź od AI
W Javie istnieją dwa główne typy danych: typy prymitywne i referencyjne.
Typy prymitywne (np. int, boolean, double) przechowują bezpośrednio wartości. Zajmują stały rozmiar pamięci i są przekazywane przez wartość. Na przykład, przypisanie jednej zmiennej do drugiej kopiuje samą wartość.
Typy referencyjne to obiekty i tablice. Zmienna typu referencyjnego przechowuje nie wartość obiektu, lecz odwołanie (adres) do obszaru pamięci, w którym obiekt się znajduje. Przy przypisaniu jednej zmiennej referencyjnej do innej, kopiowane jest odwołanie, nie obiekt. Oznacza to, że obie zmienne będą wskazywać na ten sam obiekt.
Przykład:
int a = 5;
int b = a; // kopiuje wartość 5
b = 10; // a pozostanie 5
String s1 = new String("hello");
String s2 = s1; // kopiuje odwołanie do obiektu
s2 = "world"; // s1 pozostanie "hello", ponieważ String jest niemutowalny
W związku z tym, główna różnica polega na sposobie przechowywania i przekazywania danych: typy prymitywne przechowują wartości bezpośrednio, a typy referencyjne odwołania do obiektów w pamięci.