Sobes.tech
Intern

Koja je razlika između primitivnih i referentnih tipova podataka?

sobes.tech АИ

Одговор од АИ

Primitivni tipovi direktno čuvaju vrednost, dok referentni tipovi čuvaju referencu (adresu u memoriji) na objekat koji sadrži vrednost.

Primitivni tipovi:

  • Zauzimaju fiksnu i malu količinu memorije.
  • Prenose se po vrednosti (kopira se sama vrednost).
  • Počinju malim slovom.
  • Uključuju: byte, short, int, long, float, double, boolean, char.
// Primer primitivnog tipa
int a = 10;
int b = a; // Kopira vrednost 10
b = 20;   // Menja se samo b, a ostaje 10

Referentni tipovi:

  • Zauzimaju različitu količinu memorije, u zavisnosti od sadržaja objekta.
  • Prenose se referencom (kopira se adresa objekta). Promena objekta putem reference utiče na sve promenljive koje na njega ukazuju.
  • Obično počinju velikim slovom (klase).
  • Uključuju: klase (String, Object, prilagođene klase), interfejse, nizove.
// Primer referentnog tipa
String str1 = new String("Hello");
String str2 = str1; // Kopira referencu na objekat "Hello"
str2 = "World";   // str2 sada ukazuje na novi objekat "World". str1 i dalje ukazuje na "Hello".

// Drugi primer sa promenljivim objektom
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Kopira referencu na isti ArrayList objekat
list2.add(2); // Dodaje element u objekat na koji ukazuju obe referencije
// Sada list1 sadrži [1, 2], a list2 sadrži [1, 2]

Brza poređenja tabela:

Svojstvo Primitivni tipovi Referentni tipovi
Skladištenje Vrednost Referenca na objekat
Prenos Po vrednosti Po referenci
Veličina memorije Fiksna i mala Promenljiva
Počinje malim slovom Da Obično velikim slovom
Nullabilnost Ne mogu biti null Mogu biti null

Primitivni tipovi se obavijaju u odgovarajuće wrapper klase (npr. int u Integer) da bi se sa njima radilo kao sa objektima.