Все ли имена являются идентификаторами?


person Teletha    schedule 30.10.2013    source источник
comment
Использование имени здесь кажется мне странным. Я предполагаю, что под name они подразумевают именованную ссылку, и в этом случае имеет смысл исключить Test, main и первые вхождения args и c (поскольку объявления != использованная литература). Все именованные ссылки и объявления являются идентификаторами, поэтому да, Class и String являются идентификаторами.   -  person Mike Strobel    schedule 31.10.2013
comment
Это та же интерпретация, что и я. Я не знаю, как я пропустил это, но ниже говорится: Можно задаться вопросом, почему в этих видах выражений используется идентификатор, а не простое имя, которое, в конце концов, является просто идентификатором. Так что кажется, что имена также являются идентификаторами.   -  person Teletha    schedule 31.10.2013


Ответы (3)


Идентификатор — это тип токена. Из спецификации лексической структуры Java :

3.8. Идентификаторы

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

Identifier:
    IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral

IdentifierChars:
    JavaLetter
    IdentifierChars JavaLetterOrDigit

 JavaLetter:
     any Unicode character that is a Java letter (see below)

 JavaLetterOrDigit:
     any Unicode character that is a Java letter-or-digit (see below)

«Буква Java» — это символ, для которого метод Character.isJavaIdentifierStart(int) возвращает значение true.

«Буква или цифра Java» — это символ, для которого метод Character.isJavaIdentifierPart(int) возвращает значение true.

«Буквы Java» включают прописные и строчные латинские буквы ASCII AZ (A-Z) и az (a-z), а также, по историческим причинам, подчеркивание ASCII (_ или _) и знак доллара. ($ или $). Символ $ следует использовать только в механически сгенерированном исходном коде или, реже, для доступа к уже существующим именам в устаревших системах.

«Цифры Java» включают цифры ASCII 0-9 (0-9).

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

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

person Joni    schedule 30.10.2013
comment
Итак, ваша интерпретация заключается в том, что имена также являются идентификаторами? - person Teletha; 31.10.2013
comment
Ты мог сказать это. Как определено в JLS, имена указываются с использованием идентификаторов. Однако не все идентификаторы указывают имена. - person Joni; 31.10.2013

Идентификатор — это определяемый пользователем символ.

Это позволяет компилятору различать привязки к объектам одного типа в таблице символов.

person yamafontes    schedule 30.10.2013

Это может ответить на ваш второй вопрос:

http://www.cafeaulait.org/course/week2/08.html

Идентификаторы — это имена переменных, методов, классов, пакетов и интерфейсов. В отличие от литералов они не являются самими вещами, а просто способами их обозначения.

person Josh    schedule 30.10.2013