Was ist der Unterschied zwischen einem Referenzdatentyp und einem Wertdatentyp?

Ein Wertdatentyp (primitiver Datentyp) kann einen numerischen Wert oder einen Wahrheitswert speichern. Für diesen Datentyp gibt es arithmetische oder logische Operatoren. Beispiele für Wertdatentypen in Java sind int, double, boolean, char, …

Ein Referenzdatentyp kann die Speicheradresse des referenzierten Objekts speichern. Für diesen Datentyp gibt es keine arithmetischen Operatoren. Beispiele für Referenzdatentypen in Java sind Object, String, List, Arrays, …

Zuweisungsoperationen:

Ein Wertdatentyp enthält einen Wert w. Wird dieser Wert einer zweiten Variable zugewiesen, enthält diese Variable eine Kopie von w.

Bei einem Referenzdatentypen wird einer Variable eine Kopie der Referenz zugewiesen. Die referenzierten Daten werden dabei nicht dupliziert.

Javabeispiel:

int a[] = new int[10]; // a ist eine Referenz auf ein Array
int b[] = a; // b ist Referenz auf das Array a, 
             // a und b zeigen auf das selbe Array
b[2] = 123;  // Das von a und b referenzierte Array 
             // bekommt am Index 2 einen Wert zugewiesen
System.out.println(a[2]); // 123 wird ausgegeben