2015-01-25 6 views
2

Я понимаю, почему идентификаторы не могут начинаться с цифр или '-'.Почему нельзя использовать '#', '.', ':' В идентификаторах?

Почему нельзя «#», «.» (точка), а ':' (двоеточие) используется как часть идентификатора?

+1

Потому что ваш код не будет компилироваться? Обратите внимание: цифры могут быть частью идентификаторов. Я не знаю, откуда у вас это правило. Также подумайте, могут ли точки быть частью идентификаторов. Что бы этот код сделал: 'foo.bar.baz.hello()'? может ли быть полем foo? или будет foo.bar быть переменной? –

+1

Потому что они не разрешены, поскольку они не были разрешены в C, на котором была основана Java. В некоторых случаях они могли бы разрешить '#', хотя он зарезервирован для будущего использования, но '.' и': 'имеют специальные значения в Java. –

+0

Потому что JLS Says So (tm) – fge

ответ

1

«Не должно» нет и точное определение. Лучше использовать «не должно» или «не может».

Как только мы изменили вопрос, мы можем ответить на него. Причина в том, что таким образом определяется язык программирования Java. Итак, вы можете: «Почему создатели java определили такие правила?»

Может быть несколько ответов. Одним из наиболее важных (IMHO) является то, что все языки программирования (по крайней мере, те, что я знаю) имеют более или менее равное определение того, какие символы могут использоваться в идентификаторах:

Письма, цифры или символы подчеркивания, начиная с буквы или нижнее подчеркивание.

К слову, java расширяет это правило, потому что оно позволяет использовать любую букву, включая национальные алфавиты, в то время как обычно другие (по крайней мере более старые) языки программирования ограничивают это только латинскими буквами.

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

Я считаю, что использование , и ; в идентификаторе, очевидно, невозможно. Подумайте о for оператора.

+0

Спасибо, я понял @AlexR, Но почему мы не должны использовать. (Точка)? – Manikanta

+1

Это еще более очевидно. Как вы можете ссылаться на поле, метод или объект? – AlexR

+0

Большое спасибо за ваше терпение, отвечая на мой вопрос (хотя это выглядит глупо). – Manikanta

1

От Java Language Specification:

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

... «Письмо Java» - это символ, для которого метод Character.isJavaIdentifierStart(int) возвращает true.

Это не буквы Java, поэтому вы не можете начать с них. $-, но это использование более сдержанно для внутренних классов.

+1

Я думаю, вопрос в том, почему JLS говорит, что вы не можете. – immibis

0

Вы не можете использовать какой-либо charecter, зарезервированный для JVM, который идентифицирует этот charecter как разделители. это в основном то же самое, что использование «нового» ключевого слова как имя переменной, что является незаконной операцией в Java.

Смежные вопросы