Sobes.tech
Intern

Wat is het verschil tussen primitieve en referentietypen?

sobes.tech AI

Antwoord van AI

Primaire types slaan direct de waarde op, terwijl referentietypes een verwijzing (adres in het geheugen) naar het object dat de waarde bevat, opslaan.

Primaire types:

  • Veroorzaakt een vaste en kleine hoeveelheid geheugen.
  • Worden door waarde-overdracht (de waarde zelf wordt gekopieerd) doorgegeven.
  • Beginnen met een kleine letter.
  • Bevatten: byte, short, int, long, float, double, boolean, char.
// Voorbeeld van een primair type
int a = 10;
int b = a; // Kopieert de waarde 10
b = 20;   // Alleen b wordt gewijzigd, a blijft 10

Referentietypes:

  • Veroorzaakt verschillende geheugenbehoeften, afhankelijk van de inhoud van het object.
  • Worden door referentie (kopie van het objectadres) doorgegeven. Wijzigingen aan het object via de referentie beïnvloeden alle variabelen die ernaar verwijzen.
  • Beginnen meestal met een hoofdletter (klassen).
  • Bevatten: klassen (String, Object, aangepaste klassen), interfaces, arrays.
// Voorbeeld van een referentietype
String str1 = new String("Hello");
String str2 = str1; // Kopieert de referentie naar het "Hello" object
str2 = "World";   // str2 verwijst nu naar een nieuw object "World". str1 verwijst nog steeds naar "Hello".

// Een ander voorbeeld met een mutable object
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Kopieert de referentie naar hetzelfde ArrayList-object
list2.add(2); // Voegt een element toe aan het object dat door beide referenties wordt gedeeld
// Nu bevat list1 [1, 2] en list2 ook [1, 2]

Snelle vergelijkingstabel:

Eigenschap Primaire types Referentietypes
Opslag Waarde Referentie naar object
Overdracht Per waarde Per referentie
Geheugengrootte Vast en klein Variabel
Begint met Kleine letter Meestal met hoofdletter
Nullbaarheid Kan niet null zijn Kan null zijn

Primaire types worden ingepakt in bijbehorende wrapper-classes (zoals int in Integer) om ermee als objecten te kunnen werken.