Допустимые символы в имени класса Java

Какие символы допустимы в имени класса Java? Какие другие правила управляют именами классов Java (например, имена классов Java не могут начинаться с цифры)?

8 ответов

Решение

Вы можете иметь практически любого персонажа, включая большинство символов Юникода! Точное определение содержится в Спецификации языка Java в разделе 3.8: Идентификаторы.

Идентификатор представляет собой последовательность букв Java и цифр Java неограниченной длины, первая из которых должна быть буквой Java....

Буквы и цифры могут быть взяты из всего набора символов Unicode, ... Это позволяет программистам использовать идентификаторы в своих программах, которые написаны на их родных языках.

Идентификатор не может иметь такое же написание (последовательность символов Unicode), что и ключевое слово (§3.9), логический литерал (§3.10.3) или нулевой литерал (§3.10.7), иначе возникает ошибка времени компиляции.

Однако, посмотрите этот вопрос, чтобы узнать, стоит ли вам это делать.

Every programming language has its own set of rules and conventions for the kinds of names that you're allowed to use, and the Java programming language is no different. The rules and conventions for naming your variables can be summarized as follows:

  • Имена переменных чувствительны к регистру. Имя переменной может быть любым допустимым идентификатором - последовательность символов Unicode неограниченной длины, начинающаяся с буквы, знака доллара "$" или символа подчеркивания "_". Соглашение, однако, заключается в том, что имена переменных всегда должны начинаться с буквы, а не "$" или "_". Кроме того, знак доллара, по соглашению, никогда не используется вообще. Вы можете столкнуться с некоторыми ситуациями, когда автоматически сгенерированные имена будут содержать знак доллара, но имена переменных всегда должны избегать его использования. Аналогичное соглашение существует для символа подчеркивания; хотя технически законно начинать имя вашей переменной с "_", такая практика не рекомендуется. Пробелы не допускаются.

  • Последующими символами могут быть буквы, цифры, знаки доллара или символы подчеркивания. Условные обозначения (и здравый смысл) применимы и к этому правилу. При выборе имени для ваших переменных используйте полные слова вместо загадочных сокращений. Это облегчит чтение и понимание вашего кода. Во многих случаях это также сделает ваш код самодокументированным; например, поля с именами cadence, speed и gear гораздо более интуитивны, чем сокращенные версии, такие как s, c и g. Also keep in mind that the name you choose must not be a keyword or reserved word.

  • If the name you choose consists of only one word, spell that word in all lowercase letters. If it consists of more than one word, capitalize the first letter of each subsequent word. The names gearRatio and currentGear are prime examples of this convention. Если ваша переменная хранит постоянное значение, такое как static final int NUM_GEARS = 6, соглашение изменяется незначительно, используя заглавные буквы и разделяя последующие слова символом подчеркивания. By convention, the underscore character is never used elsewhere.

From the official Java Tutorial.

В дополнение к предыдущим ответам стоит отметить, что:

  1. Java допускает любой символ валюты Unicode в именах символов, поэтому будет работать следующее:

$ var1 £ var2 € var3

Я считаю, что использование символов валюты берет свое начало в C/C++, где переменные, добавляемые в ваш код компилятором, обычно начинаются с '$'. Очевидным примером в Java являются имена файлов ".class" для внутренних классов, которые по соглашению имеют формат "Outer$Inner.class".

  1. Многие программисты на C# и C++ придерживаются соглашения о размещении "I" перед интерфейсами (то есть чисто виртуальных классов в C++). Это не требуется и, следовательно, не выполняется в Java, потому что ключевое слово Implements дает понять, когда что-то является интерфейсом.

Для сравнения:

Класс Employee: общедоступный IPayable //C++

с

Класс Employee: IPayable //C#

а также

Класс Employee реализует Payable //Java

  1. Многие проекты используют соглашение о размещении подчеркивания перед именами полей, чтобы их можно было легко отличить от локальных переменных и параметров, например

частный двойной _salary;

Крошечное меньшинство ставит подчеркивание после имени поля, например

частная двойная зарплата_;

Как уже заявил Джейсон Коэн, Спецификация языка Java определяет, что такое юридический идентификатор в разделе 3.8:

"Идентификатор представляет собой последовательность букв Java и цифр Java неограниченной длины, первая из которых должна быть буквой Java. [...] Буква Java - это символ, для которого возвращается метод Character.isJavaIdentifierStart(int) true."Буква или цифра Java" - это символ, для которого метод Character.isJavaIdentifierPart(int) возвращает true."

Это, надеюсь, ответит на ваш второй вопрос. Относительно вашего первого вопроса; Преподаватели и (насколько я помню) преподаватели Java учили меня, что имя класса Java должно быть идентификатором, начинающимся с заглавной буквы AZ, но я не могу найти надежного источника по этому вопросу. При тестировании с OpenJDK нет никаких предупреждений, когда имена классов начинаются строчными буквами или даже знаком $. Однако при использовании $-sign вы должны его избежать, если вы компилируете из оболочки bash.

Я хотел бы добавить к ответу Босника, что любой допустимый символ валюты является допустимым для идентификатора в Java. € € является юридическим идентификатором, так же, как € this, и € также. Однако я не могу понять, как редактировать его или ее ответ, поэтому я вынужден опубликовать это тривиальное дополнение.

Какие другие правила управляют именами классов Java (например, имена классов Java не могут начинаться с цифры)?

  • Имена классов Java обычно начинаются с заглавной буквы.
  • Имена классов Java не могут начинаться с цифры.
  • если в имени класса несколько слов, например "MyClassName", каждое слово должно начинаться с заглавной буквы. Например, "MyClassName". Это соглашение об именах основано на типе CamelCase.

Идентификаторы используются для имен классов, имен методов и имен переменных. Идентификатором может быть любая описательная последовательность прописных и строчных букв, цифр или знаков подчеркивания и знака доллара. Они не должны начинаться с цифры, чтобы не быть перепутанными с числовым литералом. Опять же, Java чувствительна к регистру, поэтому VALUE является отличительным от Value. Некоторые примеры допустимых идентификаторов:

AvgTemp, count a4, $ test, this_is_ok

Неверные имена переменных включают в себя:

2count, высокотемпературный, не / нормально

Имена классов должны быть существительными в UpperCamelCase, причем первая буква каждого слова должна быть заглавной. Используйте целые слова - избегайте сокращений и аббревиатур (если только аббревиатура не используется намного шире, чем полная форма, такая как URL или HTML). Соглашения об именах можно прочитать здесь:

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

Другие вопросы по тегам