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

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

8 ответов


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

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

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

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

см. этот вопрос для того, следует ли вам это делать.

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

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

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

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

С официальный учебник Java.


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

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

переменной$var1 £переменная2 €var3

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

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

сравниваем:

сотрудник класса: public IPayable / / C++

с

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

и

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

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

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

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

отдельный двухместный salary_;


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

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

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


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


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

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

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

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


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

AvgTemp, count a4, $test, this_is_ok

недействительным имена переменных включают:

2count, высокая температура, не/ok