Действительные символы в имени класса Java

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

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

Из официального учебника по Java.

Ответ 3

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

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

$var1 £ var2 € var3

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

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

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

class Employee: public IPayable//С++

с

class Employee: IPayable//С#

и

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

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

private double _salary;

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

AvgTemp, count a4, $test, this_is_ok

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

2count, high-temp, Not/ok