Was ist der Unterschied zwischen "null" und " 0" in der Programmierung und im wirklichen Leben?
Schauen wir uns einmal die Vergangenheit von Programmiersprachen an und versuchen den Sinn von 0, undefined und Null zu kennenzulernen.
In C gab es ursprünglich weder undefined noch Null. Jede Integer-Variable müsste einen Wert haben.
int x;
printf("%d",x); gibt einen rein zufälligen Wert aus da x zwar eine Variable im Speicher ist, dieser jedoch kein eigener Wert zugewiesen wurde. Diese Problem lösen moderne Programmiersprachen mit null - oder noch besser "undefined".
Nun stell dir vor, dass es eine Funktion getNumber() gibt, welche im Normalfall Zahlen (Typ: int) zurückgeben soll. Allerdings können auch Fehler hierbei auftreten. Deshalb muss es für Fehler einen Wert beziehungsweise eine Zahl geben, welche definitiv keine gültige Nummer ist, sodass die aufrufende Funktion prüfen kann, ob ein Fehler aufgetreten ist. In C wurde dies klassisch dadurch realisiert, dass beispielsweise nur positive Zahlen (und 0) zurückgegeben werden. Ein negatives Ergebnis wäre demnach ein Fehlerindikator und anhand der negativen Zahl (z.B. -1, -2, -3) lässt sich der Fehler ablesen.
Moderne Programmiersprachen führen hierzu den Wert null ein. Somit kann anhand eines Rückgabewertes Null ermittelt werden, ob ein Fehler aufgetreten ist (null). Da sich auf diese Weise jedoch keine Fehlerdetails mitgeben lassen und weil die Auswertung von Fehlern in stark verschachtelten Methoden sehr komplex wird, werden meistens Exceptions für die Fehlerbehandlung eingesetzt.
Ein weiterer Anwendungszweck besteht in default-Werten für Funktionsparameter. Stell dir eine Methode getDate() vor, welche das Datum zurückliefert. Dieser Methode soll optional ein Formattierungsstrich übergeben werden (z.B. YYYY-MM-dd: 2021–05–16 oder YY-MM-dd: 21–05–16). Der Funktionsprototyp könnte nun wie folgt aussehen: getDate(formattierungsString=null). Wenn kein formattierungs String übergeben wird, enthält der Parameter den Wert null - ansonsten den String.