Caractères valides dans un nom de classe Java

quels caractères sont valides dans un nom de classe Java? Quelles autres règles régissent les noms de classe Java (par exemple, les noms de classe Java ne peuvent pas commencer par un numéro)?

63
demandé sur netjeff 2008-09-15 22:35:04

8 réponses

vous pouvez avoir presque n'importe quel caractère, y compris la plupart des caractères Unicode! La définition exacte est dans la spécification de langage Java sous la section 3.8: identificateurs .

Un identificateur est d'une longueur illimitée séquence de Java lettres et Java chiffres , dont la première doit être une Java lettre . ...

Les Lettres et les chiffres peuvent être tirés du jeu de caractères Unicode entier ... Cela permet aux programmeurs d'utiliser des identificateurs dans leurs programmes qui sont écrits dans leur langue maternelle.

un identifiant ne peut pas avoir la même orthographe (séquence de caractères Unicode) qu'un mot-clé (§3.9), booléen littéral (§3.10.3), ou nul (§3.10.7), ou une erreur de compilation se produit.

cependant, voir cette question pour savoir si oui ou non vous devez faire cela.

52
répondu Jason Cohen 2018-05-09 09:32:03

chaque langage de programmation a ses propres règles et conventions pour les types de noms que vous êtes autorisé à utiliser, et le langage de programmation Java n'est pas différent. Les règles et les conventions pour nommer vos variables peuvent être résumées comme suit:

  • les noms des variables sont sensibles à la casse. Le nom d'une variable peut être n'importe quel identifiant légal - une séquence illimitée de lettres et de chiffres Unicode, commençant par un la lettre, le signe dollar "$", ou le caractère de soulignement "_". Toutefois, la convention est de toujours commencer vos noms de variables avec une lettre, pas de "$" ou "_". En outre, le signe dollar, par convention, n'est jamais utilisé. Vous pouvez trouver des situations où des noms générés automatiquement contiendront le signe dollar, mais vos noms de variables devraient toujours éviter de l'utiliser. Une convention similaire existe pour le caractère underscore; alors qu'il est techniquement légal de commencer le nom de votre variable avec "_", cette pratique est déconseillée. L'espace blanc n'est pas autorisée.

  • les caractères suivants peuvent être des lettres, des chiffres, des signes en dollars ou des caractères de soulignement. Les Conventions (et le bon sens) s'appliquent également à cette règle. Lorsque vous choisissez un nom pour vos variables, utilisez des mots entiers au lieu d'abréviations cryptiques. Ainsi, votre code sera plus facile à lire et à comprendre. Dans de nombreux cas, il va également rendre votre code auto-documentant; champs nommés cadence, la vitesse, et le rapport, par exemple, sont beaucoup plus intuitifs que les versions abrégées, telles que s, c, et G. Gardez également à l'esprit que le nom que vous choisissez ne doit pas être un mot-clé ou un mot réservé.

  • Si le nom que vous choisissez se compose d'un seul mot, sort ce mot en minuscules. S'il est composé de plus d'un mot, inscrivez la première lettre de chaque mot suivant. Les noms gearRatio et currentGear sont des exemples parfaits de cette convention. Si votre variable stocke une valeur constante, comme static final int NUM_GEARS = 6 , la convention change légèrement, en majuscules chaque lettre et en séparant les mots suivants avec le caractère de soulignement. Par convention, le caractère de soulignement n'est jamais utilisé ailleurs.

à Partir de l'officiel de Java Tutoriel .

16
répondu Ivan Bosnic 2018-07-27 05:30:30

suite à des réponses précédentes il vaut la peine de noter que:

  1. Java permet n'importe quel symbole de monnaie Unicode dans les noms de symbole, de sorte que tout ce qui suit fonctionnera:

$ var1 £ var2 € var3

je crois que l'utilisation des symboles de monnaie provient de C/C++, où les variables ajoutées à votre code par le compilateur ont commencé conventionnellement avec '$'. Un exemple évident en Java est les noms de.' les fichiers de classe ' pour les classes internes, qui par convention ont le format 'External$Inner."de classe

  1. beaucoup de programmeurs C# et C++ adoptent la convention de placer 'I' devant les interfaces (alias classes virtuelles pures en C++). Cela n'est pas nécessaire, et donc pas fait, en Java parce que le mot-clé implements rend très clair quand quelque chose est une interface.

comparer:

Employé de la catégorie

: public IPayable / / c++

avec

de la classe Employé : IPayable //C#

et

de la classe Employé met en œuvre à Payer //Java

  1. de nombreux projets utilisent la convention de placer un trait de soulignement devant les noms de champ, de sorte qu'ils peuvent être facilement distingués des variables et paramètres locaux, par exemple:

double _salaire privé;

une minuscule minorité place le trait de soulignement après le nom du champ, par exemple

double vente privée";

9
répondu Garth Gilmour 2008-09-15 19:49:12

comme déjà indiqué par Jason Cohen, la spécification Java Language définit ce qu'est un identificateur légal dans la section 3.8:

"Un identificateur est une longueur illimitée séquence de Java lettres et Java chiffres, le la première doit être une lettre Java. [...] Une "lettre Java" est un caractère pour lequel le caractère de la méthode.isJavaIdentifierStart (int) retourne true. Un "Java letter-or-digit" est un caractère pour lequel le caractère de la méthode.retours isJavaIdentifierPart (int) vrai."

ceci répond, espérons-le, à votre deuxième question. En ce qui concerne votre première question, j'ai appris à la fois par des enseignants et (pour autant que je me souvienne) des compilateurs Java qu'un nom de classe Java devrait être un identifiant qui commence par une lettre majuscule A-Z, mais je ne peux pas trouver de source fiable à ce sujet. Lors de l'essai avec OpenJDK, il n'y a pas d'avertissement lorsque l'on commence par des noms de classe avec des lettres minuscules ou même un $-sign. Lorsque vous utilisez un signe$, vous devez y échapper si vous compiler à partir d'un shell bash, cependant.

4
répondu EriF89 2012-06-26 14:30:16

j'aimerais ajouter à la réponse de bosnic que tout caractère de devise valide est légal pour un identifiant en Java. th€est un identificateur, comme est €et €. Cependant, je ne peux pas comprendre comment modifier sa réponse, donc je suis obligé de poster cette triviale plus.

2
répondu MetroidFan2002 2008-09-15 19:27:18

quelles autres règles régissent les noms de classe Java (par exemple, les noms de classe Java ne peuvent pas commencer par un numéro)?

  • les noms des classes Java commencent habituellement par une lettre majuscule.
  • les noms de classe Java ne peuvent pas commencer par un numéro.
  • s'il y a plusieurs mots dans le nom de classe comme" MyClassName " chaque mot doit commencer par une lettre majuscule. eg - "MyClassName".Cette convention de nommage est basée sur sur CamelCase Type.
1
répondu Deepak Kumar 2017-02-18 19:46:28

les noms de classe doivent être des noms dans UpperCamelCase, avec la première lettre de chaque mot en majuscule. Utilisez des mots entiers-évitez les acronymes et les abréviations (à moins que l'abréviation soit beaucoup plus utilisée que la forme longue, comme URL ou HTML). Les conventions de nommage peuvent être lues ici:

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

0
répondu Sachin Tiwari 2015-01-18 15:55:09
Les identificateurs

sont utilisés pour les noms de classe, les noms de méthode et les noms de variables. Une identification peut être n'importe quelle séquence descriptive de lettres majuscules et minuscules, de chiffres, ou de caractères d'underscore et de dollar-signe. Elles ne doivent pas commencer par un nombre, de peur d'être confondues avec un chiffre littéral. Encore une fois, Java est sensible à la casse, donc VALUE est un différencidentifier par rapport à Value. Voici quelques exemples d'identificateurs valides:

AvgTemp, count a4, $test, this_is_ok

les noms des variables invalides comprennent:

2count, à haute température, ce n'est Pas/ok

0
répondu navneet kumar 2016-09-07 13:25:38