„Hi, Amigo!“

„Hi, Ellie!“

„Ich bin heute gut gelaunt, also möchte ich dir etwas Interessantes erzählen. Ich beginne damit, wie Javas Typensystem mit primitiven Typen umgeht.“

„In Java hat jedes Objekt und jede Variable einen eigenen voreingestellten unveränderlichen Typ. Der Typ einer primitiven Variable wird beim Kompilieren des Programms bestimmt, wohingegen der Typ eines Objekts beim Erstellen des Objekts bestimmt wird. Der Typ eines neu erstellten Objekts bzw. einer Variable bleibt während seiner Lebensdauer unverändert. Hier ist ein Beispiel:“

Java-Code Beschreibung
int a = 11;
int b = 5;
int c = a / b; // c == 2
a / b – repräsentiert die Division von Ganzzahlen. Die Antwort ist zwei. Der Rest des Divisionsvorgangs wird einfach ignoriert.
int a = 13;
int b = 5;
int d = a % b; // d == 3
d speichert den Rest der ganzzahligen Division von a durch b. Der Rest ist 3.

„Es gibt ein paar interessante Details, die du dir merken musst.“

„Erstens zeigt eine Referenzvariable nicht immer auf einen Wert, der den gleichen Typ besitzt wie sie.“

„Zweitens müssen Variablen, wenn sie mit zwei verschiedenen Typen interagieren, zuerst in den gleichen Typ umgewandelt werden.“

„Was ist mit der Division? Wenn wir 1 durch 3 teilen, erhalten wir 0.333(3). Richtig?“

„Nein, das ist nicht richtig. Wenn wir zwei ganze Zahlen teilen, ist das Ergebnis auch eine ganze Zahl. Wenn du 5 durch 3 teilst, ist die Antwort 1 mit zwei als Rest. Und der Rest wird ignoriert.“

„Wenn wir 1 durch 3 teilen, erhalten wir 0 (mit Rest 1, der ignoriert wird).“

„Aber was mache ich, wenn ich 0.333 erhalten will?“

„In Java ist es am besten, eine Zahl vor der Division in einen Gleitkommazahl umzuwandeln, indem man sie mit der Gleitkommazahl eins (1.0) multipliziert.“

Java-Code Beschreibung
int a = 1/3;
a wird 0 sein
double d = 1/3;
 d wird 0.0 sein
double d = 1.0 / 3;
d wird 0.333(3) sein
double d = 1 / 3.0;
d wird 0.333(3) sein
int a = 5, b = 7;
double d = (a * 1.0) / b;
d wird 0.7142857142857143 sein

„Alles klar.“