Почему некоторые идентификаторы недопустимы в java?

Как мы все знаем, допустимые идентификаторы в java — это те идентификаторы, которые должны начинаться с буквы, символа валюты ($) или связующего символа, такого как подчеркивание (_).

И идентификаторы не могут начинаться с цифр и тому подобного (":", "-", "e#", ".f" и т.д.)

Итак, мой вопрос в том, почему java ограничивает эти ключевые слова как незаконные идентификаторы.


person Anand Kumar    schedule 19.10.2014    source источник
comment
Потому что эти символы уже имеют другие значения в языке?   -  person JJJ    schedule 19.10.2014
comment
Юхана, я так не думаю, давайте посмотрим на это объявление переменной,   -  person Anand Kumar    schedule 19.10.2014
comment
‹код›int :a;‹/код›   -  person Anand Kumar    schedule 19.10.2014
comment
: используются в расширенном цикле for, - это вычитание, . Используется для доступа к членам. Подумайте обо всех местах, где может использоваться переменная, а не только о ее объявлении.   -  person Richard Tingle    schedule 19.10.2014
comment
@RichardTingle ох! да. ты прав.. спасибо   -  person Anand Kumar    schedule 19.10.2014
comment
@Юхана, да. ваш ответ очень помог мне понять разницу между незаконными и легальными идентификаторами. Спасибо.   -  person Anand Kumar    schedule 19.10.2014


Ответы (1)


Причина в том, что вы хотите упростить синтаксический анализ языка и предотвратить двусмысленные ситуации. Предположим, вы можете назвать переменную «-velocity» вместо «negative_velocity». Теперь, что означает этот термин?

h = foo - -velocity

Это вычитание отрицательной скорости из foo или отрицание скорости, а затем вычитание ее из foo? То же самое касается и других персонажей, например. точка для использования в качестве оператора доступа к атрибуту (foo.bar) и части с плавающей запятой (.78). Список продолжается.

Вы могли разрешить все это, но тогда вам пришлось бы иметь многоэтапный процесс синтаксического анализа, в котором вам нужно один раз проанализировать исходный текст на наличие объявлений-идентификаторов, а затем проанализировать его снова. em>, чтобы попытаться выяснить, где они используются. При этом вы также можете оказаться в ситуации, когда вы - посредством импорта - сделаете недействительным существующий код, который до этого был однозначным, но теперь, например. объявляет "-velocity" как идентификатор, и тогда приведенное выше выражение неоднозначно)

person deets    schedule 19.10.2014