Gültige Zeichen in einem Java-Klassennamen


72

Welche Zeichen sind in einem Java-Klassennamen gültig? Welche anderen Regeln regeln Java-Klassennamen (Java-Klassennamen dürfen beispielsweise nicht mit einer Zahl beginnen)?


1
Mögliches Duplikat von Legal-IDs in Java, da in docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.1 Folgendes angegeben ist : class Identifier. Dies ist viel älter, aber das andere ist viel besser und allgemeiner: Gleiches gilt für Methoden, Variablen usw.
Ciro Santilli 4 冠状 病 六四 事件 法轮功

Antworten:


60

Sie können fast jedes Zeichen haben, einschließlich der meisten Unicode-Zeichen! Die genaue Definition finden Sie in der Java-Sprachspezifikation unter Abschnitt 3.8: Bezeichner .

Ein Bezeichner ist eine unbegrenzte Folge von Java-Buchstaben und Java-Ziffern , von denen der erste ein Java-Buchstabe sein muss . ...

Buchstaben und Ziffern können aus dem gesamten Unicode-Zeichensatz gezogen werden. Dies ermöglicht es Programmierern, Bezeichner in ihren Programmen zu verwenden, die in ihrer Muttersprache geschrieben sind.

Ein Bezeichner kann nicht dieselbe Schreibweise (Unicode-Zeichenfolge) wie ein Schlüsselwort (§3.9), ein Boolesches Literal (§3.10.3) oder ein Nullliteral (§3.10.7) haben, oder es tritt ein Fehler bei der Kompilierung auf.

In dieser Frage erfahren Sie jedoch, ob Sie dies tun sollten oder nicht.


3
"... einschließlich der meisten Unicode-Zeichen" - das hat mir an Java immer gefallen. Sie können buchstäblich πals Variablenname für pi verwenden.
JWW

15

Jede Programmiersprache hat ihre eigenen Regeln und Konventionen für die Arten von Namen, die Sie verwenden dürfen, und die Java-Programmiersprache ist nicht anders. Die Regeln und Konventionen für die Benennung Ihrer Variablen können wie folgt zusammengefasst werden:

  • Bei Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden. Der Name einer Variablen kann eine beliebige legale Kennung sein - eine unbegrenzte Folge von Unicode-Buchstaben und -Ziffern, beginnend mit einem Buchstaben, dem Dollarzeichen "$" oder dem Unterstrich "_". Die Konvention besteht jedoch darin, Ihre Variablennamen immer mit einem Buchstaben zu beginnen, nicht mit "$" oder "_". Außerdem wird das Dollarzeichen gemäß Konvention überhaupt nicht verwendet. Es kann vorkommen, dass automatisch generierte Namen das Dollarzeichen enthalten, Ihre Variablennamen sollten dies jedoch immer vermeiden. Eine ähnliche Konvention besteht für den Unterstrich. Obwohl es technisch legal ist, den Namen Ihrer Variablen mit "_" zu beginnen, wird von dieser Vorgehensweise abgeraten. Leerzeichen sind nicht zulässig.

  • Nachfolgende Zeichen können Buchstaben, Ziffern, Dollarzeichen oder Unterstriche sein. Konventionen (und gesunder Menschenverstand) gelten auch für diese Regel. Verwenden Sie bei der Auswahl eines Namens für Ihre Variablen vollständige Wörter anstelle von kryptischen Abkürzungen. Dadurch wird Ihr Code leichter lesbar und verständlicher. In vielen Fällen wird Ihr Code auch selbstdokumentierend. Felder mit den Namen Trittfrequenz, Geschwindigkeit und Gang sind beispielsweise viel intuitiver als abgekürzte Versionen wie s, c und g. Beachten Sie auch, dass der von Ihnen gewählte Name kein Schlüsselwort oder reserviertes Wort sein darf.

  • Wenn der von Ihnen gewählte Name nur aus einem Wort besteht, buchstabieren Sie dieses Wort in Kleinbuchstaben. Wenn es aus mehr als einem Wort besteht, schreiben Sie den ersten Buchstaben jedes nachfolgenden Wortes in Großbuchstaben. Die Namen gearRatio und currentGear sind Paradebeispiele für diese Konvention. Wenn Ihre Variable einen konstanten Wert speichert, z. B. static final int NUM_GEARS = 6ändert sich die Konvention geringfügig, wobei jeder Buchstabe groß geschrieben und nachfolgende Wörter durch den Unterstrich getrennt werden. Konventionell wird der Unterstrich an keiner anderen Stelle verwendet.

Aus dem offiziellen Java Tutorial .


6
Die Operation fragte nach Klassennamen, nicht nach Variablennamen!
Electronix384128

10

Nach früheren Antworten ist Folgendes zu beachten:

  1. Java erlaubt jedes Unicode-Währungssymbol in Symbolnamen, daher funktioniert Folgendes:

$ var1 £ var2 € var3

Ich glaube, die Verwendung von Währungssymbolen stammt aus C / C ++, wo Variablen, die der Compiler Ihrem Code hinzugefügt hat, herkömmlicherweise mit '$' beginnen. Ein offensichtliches Beispiel in Java sind die Namen von '.class'-Dateien für innere Klassen, die standardmäßig das Format' Outer $ Inner.class 'haben.

  1. Viele C # - und C ++ - Programmierer verwenden die Konvention, 'I' vor Schnittstellen zu platzieren (auch bekannt als reine virtuelle Klassen in C ++). Dies ist in Java nicht erforderlich und wird daher auch nicht durchgeführt, da das Schlüsselwort implements sehr deutlich macht, wenn es sich um eine Schnittstelle handelt.

Vergleichen Sie:

Klasse Mitarbeiter: public IPayable // C ++

mit

Klasse Mitarbeiter: IPayable // C #

und

Klasse Employee implementiert Payable // Java

  1. Viele Projekte verwenden die Konvention, einen Unterstrich vor Feldnamen zu setzen, damit sie leicht von lokalen Variablen und Parametern unterschieden werden können, z

privates doppeltes Gehalt;

Eine winzige Minderheit setzt den Unterstrich nach dem Feldnamen, z

privates doppeltes Gehalt_;


2
"Viele Projekte verwenden die Konvention, einen Unterstrich vor Feldnamen zu setzen" .. welche Sprache? Java oder C ++?
Pacerier

4

Wie bereits von Jason Cohen angegeben, definiert die Java-Sprachspezifikation, was eine rechtliche Kennung in Abschnitt 3.8 ist:

"Ein Bezeichner ist eine unbegrenzte Folge von Java-Buchstaben und Java-Ziffern, von denen der erste ein Java-Buchstabe sein muss. [...] Ein 'Java-Buchstabe' ist ein Zeichen, für das die Methode Character.isJavaIdentifierStart (int) zurückgibt true. Ein 'Java-Buchstabe oder eine Ziffer' ist ein Zeichen, für das die Methode Character.isJavaIdentifierPart (int) true zurückgibt. "

Dies beantwortet hoffentlich Ihre zweite Frage. In Bezug auf Ihre erste Frage; Ich habe sowohl von Lehrern als auch (soweit ich mich erinnern kann) Java-Compilern gelernt, dass ein Java-Klassenname eine Kennung sein sollte, die mit einem Großbuchstaben AZ beginnt, aber ich kann keine verlässliche Quelle dafür finden. Beim Ausprobieren mit OpenJDK gibt es keine Warnungen, wenn Klassennamen mit Kleinbuchstaben oder sogar einem $ -Zeichen beginnen. Wenn Sie ein $ -Zeichen verwenden, müssen Sie es jedoch maskieren, wenn Sie aus einer Bash-Shell kompilieren.


2

Ich möchte der Antwort von bosnic hinzufügen, dass jedes gültige Währungszeichen für eine Kennung in Java zulässig ist. Dies ist eine rechtliche Kennung, ebenso wie dies und auch. Ich kann jedoch nicht herausfinden, wie ich seine Antwort bearbeiten soll, daher bin ich gezwungen, diesen trivialen Zusatz zu veröffentlichen.


1

Welche anderen Regeln regeln Java-Klassennamen (Java-Klassennamen dürfen beispielsweise nicht mit einer Zahl beginnen)?

  • Java-Klassennamen beginnen normalerweise mit einem Großbuchstaben.
  • Java-Klassennamen dürfen nicht mit einer Zahl beginnen.
  • Wenn der Klassenname mehrere Wörter wie "MyClassName" enthält, sollte jedes Wort mit einem Großbuchstaben beginnen. zB "MyClassName". Diese Namenskonvention basiert auf dem CamelCase- Typ.

0

Klassennamen sollten in UpperCamelCase Substantive sein, wobei der erste Buchstabe jedes Wortes groß geschrieben wird. Verwenden Sie ganze Wörter - vermeiden Sie Akronyme und Abkürzungen (es sei denn, die Abkürzung wird viel häufiger verwendet als die Langform wie URL oder HTML). Die Namenskonventionen können hier nachgelesen werden:

http://www.oracle.com/technetwork/java/codeconventions-135099.html


0

Bezeichner werden für Klassennamen, Methodennamen und Variablennamen verwendet. Ein Bezeichner kann eine beliebige beschreibende Folge von Groß- und Kleinbuchstaben, Zahlen oder den Unterstrichen und Dollarzeichen sein. Sie dürfen nicht mit einer Zahl beginnen, damit sie nicht mit einem numerischen Literal verwechselt werden. Auch hier unterscheidet Java zwischen Groß- und Kleinschreibung, sodass VALUE eine andere Kennung als Value ist. Einige Beispiele für gültige Bezeichner sind:

AvgTemp, zähle a4, $ test, this_is_ok

Ungültige Variablennamen umfassen:

2count, Hochtemperatur, Nicht / ok

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.