Sobes.tech
Intern

Was ist der Unterschied zwischen primitiven und referenzierten Datentypen?

sobes.tech KI

Antwort von AI

Primitive Datentypen speichern direkt den Wert, während Referenztypen eine Referenz (Adresse im Speicher) auf das Objekt speichern, das den Wert enthält.

Primitive Typen:

  • Beanspruchen einen festen und kleinen Speicherplatz.
  • Werden durch Wertübertragung (der Wert selbst wird kopiert) übertragen.
  • Beginnen mit einem Kleinbuchstaben.
  • Einschließlich: byte, short, int, long, float, double, boolean, char.
// Beispiel für einen primitiven Typ
int a = 10;
int b = a; // Der Wert 10 wird kopiert
b = 20;   // Nur b ändert sich, a bleibt 10

Referenztypen:

  • Beanspruchen unterschiedlich viel Speicher, abhängig vom Inhalt des Objekts.
  • Werden durch Referenz (Kopieren der Objektadresse) übertragen. Änderungen am Objekt durch die Referenz wirken sich auf alle Variablen aus, die auf das Objekt verweisen.
  • Beginnen meist mit einem Großbuchstaben (Klassen).
  • Einschließlich: Klassen (String, Object, benutzerdefinierte Klassen), Schnittstellen, Arrays.
// Beispiel für einen Referenztyp
String str1 = new String("Hello");
String str2 = str1; // Kopiert die Referenz auf das Objekt "Hello"
str2 = "World";   // str2 verweist jetzt auf ein neues Objekt "World". str1 verweist weiterhin auf "Hello".

// Ein weiteres Beispiel mit einem veränderbaren Objekt
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
ArrayList<Integer> list2 = list1; // Kopiert die Referenz auf dasselbe ArrayList-Objekt
list2.add(2); // Fügt ein Element zum Objekt hinzu, auf das beide Referenzen zugreifen
// Jetzt enthält list1 [1, 2] und list2 auch [1, 2]

Kurzer Vergleichstabelle:

Eigenschaft Primitive Typen Referenztypen
Speicherung Wert Referenz auf das Objekt
Übergabe Nach Wert Nach Referenz
Speichergröße Feste Größe Variabel
Beginnt mit Kleinbuchstabe In der Regel mit Großbuchstabe
Nullbarkeit Können nicht null sein Können null sein

Primitive Typen werden in entsprechende Wrapper-Klassen eingepackt (z.B. int in Integer), um sie wie Objekte behandeln zu können.