| Baustein | Wirkung im Programm | Planning use |
|---|---|---|
| Typ jeder Variable | Jede Variable und jeder Ausdruck hat einen Typ, der zur Übersetzungszeit feststeht. Typfehler fallen so früh auf. | Typ immer bewusst wählen, statt Fehler erst beim Testen zu suchen. |
| int | Ganzzahlen von -2147483648 bis 2147483647. Die eingebauten Ganzzahloperatoren melden keinen Überlauf. | Bei möglicherweise sehr großen Ergebnissen auf long ausweichen. |
| double | Kommazahlen. Ein Cast auf int schneidet ab: 87.6 wird zu 87. | Cast nur einsetzen, wenn Nachkommastellen wegfallen dürfen. |
| boolean | Genau zwei Werte: true und false. Casts mit boolean gibt es nicht. | Für Bedingungen und Zustände verwenden, nicht für Zahlen. |
| String | Referenztyp, kein primitiver Typ. | Als Klasse behandeln, nicht wie eine Zahl. |
Die Angaben stützen sich auf die Java Language Specification von Oracle und die Referenz zur Typumwandlung bei SyntaxDB.
Variablen und Datentypen Java: Jede Variable ist ein benannter Speicherplatz mit festem Typ, den der Compiler vor dem Start kennt. Entscheidend ist, dass der Typ zur Aufgabe passt, sonst entstehen Überlauf oder abgeschnittene Nachkommastellen.
Die Grundlagen gehören zum Lernweg, den die Seite java lernen schule insgesamt beschreibt. Wer bereits Aufgaben aus dem Beitrag java kara programmieren bearbeitet hat, kann hier den Schritt zu eigenen Variablen machen.
Typfehler im Schulprogramm: Was schiefgehen kann
Die meisten Fehler rund um Variablen entstehen nicht durch falsche Syntax, sondern durch einen Typ, der zur Rechnung nicht passt. Drei Muster tauchen in Schulaufgaben immer wieder auf.
Überlauf bei int
Die Java Language Specification hält fest, dass die eingebauten Ganzzahloperatoren einen Überlauf in keiner Weise anzeigen. Das Programm läuft weiter und liefert einfach ein falsches Ergebnis. Als Beispiel nennt die Spezifikation die Multiplikation von 1000000 mit 1000000: Mit int ausgegeben ergibt sie -727379968, als long-Multiplikation dagegen 1000000000000. Ein negatives Produkt aus zwei positiven Zahlen ist deshalb ein typisches Warnsignal für einen zu kleinen Datentyp.
Abgeschnittene Nachkommastellen
Wer ein double in ein int umwandelt, verliert die Nachkommastellen. Das Beispiel bei SyntaxDB zeigt es an einer Note: Die berechnete Punktzahl 87.6 wird per Cast zu 87. Es wird also abgeschnitten, nicht gerundet. Für Notenberechnungen im Unterricht ist das relevant, weil ein stillschweigend abgeschnittener Mittelwert das Ergebnis verfälscht.
Zuweisungen, die der Compiler ablehnt
Weil jeder Typ zur Übersetzungszeit bekannt ist, hilft die starke Typisierung laut Spezifikation dabei, Fehler schon beim Übersetzen zu erkennen. Ein double einer int-Variablen ohne Cast zuzuweisen, ist eine Verengung, und die muss in Java ausdrücklich angegeben werden. Der Fehler zeigt sich daher vor dem Start und nicht erst im laufenden Programm.
Daraus ergeben sich einfache Entscheidungen beim Schreiben von Aufgaben:
- Ganzzahlen mit Grenzrisiko: Wenn Produkte oder Summen sehr groß werden können, ist long die sicherere Wahl als int.
- Mittelwerte und Anteile: Als double speichern und erst am Ende, falls überhaupt nötig, in int umwandeln.
- Auffällige Ergebnisse: Ein unerwartet negativer oder abgeschnittener Wert deutet zuerst auf den Typ der Variablen hin, nicht auf die Formel.
Variablen deklarieren: Typ, Name und Wert
Eine Variable steht für eine benannte Speicherstelle, an der ein Wert eines bestimmten Typs liegt. Weil jede Variable einen Typ hat, der zur Übersetzungszeit feststeht, gehört der Typ in Java immer zur Deklaration.
Das Muster lautet Typ, Name, optional ein Wert. Eine reine Deklaration wie int zaehler; legt die Speicherstelle an, eine Deklaration mit Zuweisung wie double punktemittel = 87.6; füllt sie sofort. Das String name = “Anna”; und boolean bestanden = true; folgen demselben Schema. Der Name dient dem Menschen zum Wiederfinden, der Typ dem Compiler zum Prüfen.

Hilfreich ist die Skizze im Unterricht: pro Variable ein Kästchen mit Name, Typ und aktuellem Wert. Wird einer Variablen später ein neuer Wert zugewiesen, ändert sich nur der Inhalt des Kästchens, nicht sein Typ. Boolesche Variablen sind vor allem für Bedingungen gedacht, deren Auswertung der Beitrag java if else verzweigung behandelt.

Primitive Datentypen und ihre Wertebereiche
Nach der Java Language Specification sind die primitiven Typen der Typ boolean und die numerischen Typen. Bei den Ganzzahlen entscheidet der Wertebereich, welcher Typ passt.
- byte: von -128 bis 127, jeweils einschließlich.
- short: von -32768 bis 32767, jeweils einschließlich.
- int: von -2147483648 bis 2147483647, jeweils einschließlich.
- long: von -9223372036854775808 bis 9223372036854775807, jeweils einschließlich.
- boolean: genau zwei Werte, true und false.
Zu den numerischen Typen gehören außerdem die Typen für Kommazahlen, bei denen double die in diesem Beitrag verwendete Wahl ist. Welcher Typ sich im Alltag eignet, ergibt sich aus der Datenlage: Für Zähler und Punktzahlen genügt ein Ganzzahltyp, dessen Bereich die Werte sicher abdeckt, für Messwerte und Durchschnitte ein Kommazahltyp.
int oder double?
Ein int kann automatisch in ein double übergehen, umgekehrt gilt das nicht. Wer mit Anteilen oder Mittelwerten rechnet, beginnt deshalb mit double, wer exakt zählt, mit int.
Typumwandlung: implizit und explizit
Typumwandlung wird nötig, sobald ein Wert in einer Variablen anderen Typs landen soll. Zwei Regeln genügen für den Einstieg.
- Erweiterung geschieht automatisch: Die Umwandlung in einen größeren oder allgemeineren Typ wie von int nach double erledigt Java selbst, ohne dass etwas geschrieben werden muss.
- Verengung braucht einen Cast: Laut SyntaxDB muss Verengung ausdrücklich erfolgen, zum Beispiel von double nach int.
- Schreibweise des Casts: Der Zieltyp steht in Klammern vor dem Wert, also int endnote = (int) punktemittel;. Für 87.6 liefert das 87.
- Reichweite von Casts: Die Spezifikation erlaubt, Werte jedes Ganzzahltyps in jeden numerischen Typ und umgekehrt zu casten.

Ein Cast ist eine bewusste Entscheidung des Programmierers, kein Reparaturwerkzeug. Er sollte dort stehen, wo der Informationsverlust gewollt ist, und nirgends sonst, damit der Compiler weiterhin auf ungewollte Verengungen hinweisen kann.

String: Warum kein primitiver Datentyp?
Die Java Language Specification unterscheidet primitive Typen von Referenztypen. Referenztypen sind Klassentypen, Schnittstellentypen und Arraytypen. String ist eine Klasse und gehört damit zu den Referenztypen, auch wenn Zeichenketten in Anführungszeichen so einfach wie ein Zahlenwert hingeschrieben werden.
Für den Unterricht heißt das: Variablen vom Typ String verhalten sich anders als int oder boolean, weil sie auf ein Objekt verweisen. Zahlenregeln wie Wertebereiche oder die Verengung per Cast gelten für Zeichenketten nicht.
Frequently asked questions
Kann ich einen boolean in eine Zahl umwandeln?
Nein. Casts sind zwischen den numerischen Typen erlaubt, mit boolean gibt es sie laut Java Language Specification nicht. Ein boolean hat nur die Werte true und false.
Darf ich byte oder short statt int verwenden?
Ja, solange alle möglichen Werte in den Bereich passen: von -128 bis 127 bei byte und von -32768 bis 32767 bei short. Wird der Bereich verlassen, meldet Java das nicht.
Verhindert die starke Typisierung alle Rechenfehler?
Nein. Sie hilft, Fehler schon beim Übersetzen zu erkennen, etwa unzulässige Zuweisungen. Ein Überlauf bei Ganzzahlen bleibt dagegen unbemerkt und muss durch die Wahl des Typs vermieden werden.



