Intern
Mi a különbség az primitív és a referencia típusú adatok között?
sobes.tech MI
Válasz az MI-től
Az alapvető típusok közvetlenül tárolják az értéket, míg a referencia típusok egy hivatkozást (cím a memóriában) tárolnak az objektumra, amely az értéket tartalmazza.
Alapvető típusok:
- Fix és kis memóriaigényűek.
- Érték szerint kerülnek átadásra (az érték maga másolódik).
- Kisbetűvel kezdődnek.
- Tartalmazzák:
byte,short,int,long,float,double,boolean,char.
// Példa egy primitív típusra
int a = 10;
int b = a; // A 10 érték másolódik
b = 20; // Csak b változik, az a változatlan marad
Referencia típusok:
- Különböző memóriamennyiséget foglalnak, az objektum tartalmától függően.
- Hivatkozás (az objektum címe) szerint kerülnek átadásra. Az objektumon végzett módosítások hatással vannak minden olyan változóra, amely erre hivatkozik.
- Általában nagybetűvel kezdődnek (osztályok).
- Tartalmazzák: osztályokat (
String,Object, egyedi osztályok), interfészeket, tömböket.
// Referencia típus példája
String str1 = new String("Hello");
String str2 = str1; // Másolódik a referencia a "Hello" objektumra
str2 = "World"; // str2 most egy új "World" objektumra hivatkozik. str1 továbbra is a "Hello"-ra.
// Egy másik példa módosítható objektummal
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Másolódik a referencia ugyanarra az ArrayList objektumra
list2.add(2); // Elem hozzáadása az objektumhoz, amelyhez mindkét referencia hozzáfér
// Most a list1 [1, 2], a list2 pedig [1, 2]
Gyors összehasonlító táblázat:
| Tulajdonság | Primitív típusok | Referencia típusok |
|---|---|---|
| Tárolás | Érték | Objektum referencia |
| Átadás | Érték szerint | Referencia szerint |
| Memória mérete | Fix és kicsi | Változó |
| Kezdőbetűvel | kisbetű | Általában nagybetűvel |
| Null érték lehetőség | Nem lehet null |
Lehet null |
A primitív típusokat wrapper osztályokba (pl. int-et Integer-be) csomagolják, hogy objektumként kezelhetők legyenek.