Почему # не позволяется в идентификаторе?

Java позволяет идентификатору запускаться с или содержать $ (знак доллара). например, международный a$b;

Но почему # не позволяется в идентификаторе? Какова определенная причина? Действительно ли # является оператором или чем-то в Java? например, интервал a#b;

7
задан Ajinkya Kulkarni 18 May 2010 в 04:29
поделиться

3 ответа

Я бы сказал, что это сочетание удобочитаемости и исторических предшественников языка. Помните, что синтаксис Java был разработан, чтобы быть понятным программистам на C и C ++. (И, как указывает @ dan04, символ # важен для большинства диалектов C и C ++.)

Между прочим, хотя $ является технически законным в идентификаторах Java, он является зарезервировано для использования компиляторами, генераторами кода и другими вещами. Если вы используете $ в идентификаторах в исходном коде, вы рискуете столкнуться с конфликтами с синтетическими идентификаторами, созданными (например) компилятором javac .

8
ответ дан 6 December 2019 в 21:11
поделиться

Переменные могут содержать буквы, цифры, подчеркивания и знаки доллара - за исключением #, @, ~, `

Я думаю, это для удобства чтения - int s # @ t; кажется странным.

1
ответ дан 6 December 2019 в 21:11
поделиться

Я сомневаюсь, что для запрета # существовала конкретная причина, равно как и общее неприятие знаков препинания в идентификаторах (которые могли выглядеть как операторы ). Были сделаны специальные исключения для работы с классами WORD_SEPARATION и Inner $.

В C и C ++, на которых основан синтаксис Java, # используется для директив препроцессора .

3
ответ дан 6 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: