Допустимые символы в имени класса Java - PullRequest
67 голосов
/ 15 сентября 2008

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

Ответы [ 8 ]

56 голосов
/ 15 сентября 2008

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

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

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

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

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

16 голосов
/ 15 сентября 2008

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

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

  • Последующими символами могут быть буквы, цифры, знаки доллара или символы подчеркивания. Соглашения (и здравый смысл) применимы и к этому правилу. При выборе имени для ваших переменных используйте полные слова вместо загадочных сокращений. Это облегчит чтение и понимание вашего кода. Во многих случаях это также сделает ваш код самодокументированным; например, поля с именами cadence, speed и gear гораздо более интуитивно понятны, чем сокращенные версии, такие как s, c и g. Также имейте в виду, что выбранное вами имя не должно быть ключевым словом или зарезервированным словом.

  • Если выбранное вами имя состоит только из одного слова, пишите это слово строчными буквами. Если оно состоит из более чем одного слова, используйте заглавные буквы первой буквы каждого последующего слова. Названия gearRatio и currentGear являются яркими примерами этого соглашения. Если ваша переменная хранит постоянное значение, такое как static final int NUM_GEARS = 6, соглашение изменяется незначительно, с заглавной буквы каждой буквы и разделяя последующие слова символом подчеркивания. По соглашению символ подчеркивания никогда не используется в другом месте.

с официального руководства по Java .

10 голосов
/ 15 сентября 2008

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

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

$ var1 £ var2 € var3

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

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

Сравните:

Класс Employee: public IPayable // C ++

с

класс Сотрудник: IPayable // C #

и

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

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

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

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

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

4 голосов
/ 26 июня 2012

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

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

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

2 голосов
/ 15 сентября 2008

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

1 голос
/ 18 февраля 2017

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

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

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

AvgTemp, count a4, $ test, this_is_ok

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

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

0 голосов
/ 18 января 2015

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

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

...