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


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

8 63

8 ответов:

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

An идентификатор представляет собой последовательность неограниченной длины Java letters и цифры 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 делает его очень ясным, когда что-то является интерфейсом.

сравниваем:

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

с

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

и

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

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

private double _salary;

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

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

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

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

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

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

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

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

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

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

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

AvgTemp, count a4, $test, this_is_ok

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

2count, high-temp, Not / ok