studyklar
GdI 1 · Übungsblatt 4 · Aufgabe 4

Gültige Java-Bezeichner und warum x = y mit long scheitert

In Java bekommt jede Variable und jede Klasse einen Namen, einen Bezeichner. Nicht jedes Wort ist als Name erlaubt. Teil a prüft acht Namen an der Regel der Vorlesung. Teil b zeigt, warum der Compiler eine harmlos wirkende Zuweisung ablehnt. Rechts steht die Grafik zum aktuellen Teil. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 4.4

a) Entscheiden Sie ohne Ausprobieren, welche der folgenden Bezeichner in Java ungültig sind und warum!

(1) Hallo_Welt (2) $Test (3) _abc (4) 2test (5) #hallo (6) te?st (7) Girokonto (8) Const

b) Entscheiden Sie ohne Ausprobieren, warum der folgende Code zu einem Compiler-Fehler führt!

int x = 0;long y = 1000;x = y;

In a) ist für jeden der acht Namen zu entscheiden, ob Java ihn als Bezeichner annimmt, und wenn nicht, warum. In b) ist zu erklären, warum drei kurze Zeilen nicht übersetzt werden. „Ohne Ausprobieren“ heißt: mit den Regeln begründen, nicht den Compiler fragen. Zur Probe zeigen wir den Compiler am Ende trotzdem.

Merke: Ein Compiler (bei Java javac) übersetzt das Programm vor dem Start. Verstößt es gegen eine Regel der Sprache, bricht er mit einer Fehlermeldung ab, und das Programm läuft gar nicht erst.
  1. a) Die Regel für Bezeichner aus der Vorlesung.
  2. a) Die acht Namen der Reihe nach prüfen.
  3. b) Die Typen int und long vergleichen.
  4. b) Die Regel für Zuweisungen anwenden, den Fehlertext lesen, Abhilfe.

Die Regel für Bezeichner

Teil der Regelerlaubt
erstes ZeichenBuchstabe, _ oder $
weitere ZeichenBuchstabe, Ziffer, _ oder $
ganzes Wortkein Schlüsselwort
Schreibweisegroß und klein sind verschieden

Ein Bezeichner darf nur aus Buchstaben, Ziffern, dem Unterstrich _ und dem Dollarzeichen $ bestehen. Das erste Zeichen ist ein Buchstabe, _ oder $, also keine Ziffer. Das Diagramm rechts zeigt genau das: links die Wahl für das erste Zeichen, rechts dahinter die Schleife für den Rest.

Zwei Zusätze stehen nicht im Diagramm. Ein Schlüsselwort (ein Wort mit fester Bedeutung in Java wie int oder if) ist als Name verboten. Und Groß- und Kleinschreibung zählt: myVar und myvar sind zwei verschiedene Namen.

Aus Skript 4, Folie 4-8 („Grundsymbole von Java“): Namen bestehen aus Buchstaben, Ziffern, „_“ und „$“, beginnen mit Buchstaben, „_“ oder „$“, sind beliebig lang; Groß-/Kleinschreibung ist signifikant. Schlüsselwörter dürfen nicht als Namen verwendet werden.

(1) Hallo_Welt und (7) Girokonto

Nameerstes ZeichenRestgültig?
Hallo_WeltH (Buchstabe)Buchstaben und _ja
GirokontoG (Buchstabe)Buchstabenja

Beide beginnen mit einem Buchstaben. Danach folgen nur Buchstaben und bei Hallo_Welt ein Unterstrich, der auch mitten im Namen erlaubt ist. Keins der beiden Wörter ist ein Schlüsselwort. Beide sind gültig.

Noch 9 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1a) Gültige Bezeichner

acht Namen an der Regel prüfen

BezeichnerBuchstabe_$BuchstabeZiffer_$
Legendegerade gemeintSyntaxdiagramm für Java-Bezeichner nach der Vorlesung.