Sobes.tech
Intern

Aký je rozdiel medzi primitívnymi a referenčnými typmi údajov?

sobes.tech AI

Odpoveď od AI

Primárne typy priamo ukladajú hodnotu, zatiaľ čo referenčné typy ukladajú odkaz (adresu v pamäti) na objekt, ktorý obsahuje hodnotu.

Primárne typy:

  • Zaberajú pevný a malý objem pamäte.
  • Sú prenášané hodnotou (kopíruje sa samotná hodnota).
  • Začínajú malým písmenom.
  • Zahŕňajú: byte, short, int, long, float, double, boolean, char.
// Príklad primárneho typu
int a = 10;
int b = a; // Kopíruje hodnotu 10
b = 20;   // Mení sa iba b, a zostáva 10

Referenčné typy:

  • Zaberajú rôzne množstvo pamäte, v závislosti od obsahu objektu.
  • Sú prenášané odkazom (kopíruje sa adresa objektu). Zmeny na objekte cez odkaz ovplyvňujú všetky premenné, ktoré naň odkazujú.
  • Zvyčajne začínajú veľkým písmenom (triedy).
  • Zahŕňajú: triedy (String, Object, vlastné triedy), rozhrania, polia.
// Príklad referenčného typu
String str1 = new String("Hello");
String str2 = str1; // Kopíruje odkaz na objekt "Hello"
str2 = "World";   // str2 teraz odkazuje na nový objekt "World". str1 stále odkazuje na "Hello".

// Iný príklad s meniteľným objektom
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Kopíruje odkaz na ten istý objekt ArrayList
list2.add(2); // Pridáva prvok do objektu, ku ktorému majú prístup obe referencie
// Teraz list1 obsahuje [1, 2] a list2 obsahuje [1, 2]

Rýchla porovnávacia tabuľka:

Vlastnosť Primárne typy Referenčné typy
Uloženie Hodnota Odkaz na objekt
Prenos Podľa hodnoty Podľa odkazu
Veľkosť pamäte Fixná a malá Premenná
Začína malým písmenom Áno Zvyčajne veľkým písmenom
Nullovateľnosť Nemôžu byť null Môžu byť null

Primárne typy sú obalené v príslušných wrapper triedach (napríklad int v Integer), aby s nimi bolo možné pracovať ako s objektmi.