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.