为什么'#','。',':'不能用于标识符?

时间:2015-01-25 09:25:49

标签: java scjp

我理解为什么标识符不能以数字或' - '开头。

为什么不能'#','。' (点),和':'(冒号)用作标识符的一部分?

3 个答案:

答案 0 :(得分:1)

来自Java Language Specification

  

标识符是Java字母和Java数字的无限长度序列,第一个必须是Java字母

     

...“Java letter”是方法Character.isJavaIdentifierStart(int)返回true的字符。

那些不是Java字母,所以你不能从那些开始。 $ ,但这种用法更多地保留给内部类。

答案 1 :(得分:1)

“不应该”不是和确切的定义。更好地使用“绝不”或“不能”。

一旦我们更改了问题,我们就可以回答。原因是这种方式定义了java编程语言。那么,你可以“为什么java创建者定义了这样的规则?”

可以有几个答案。最相关的(IMHO)之一是所有编程语言(至少是我所知道的)对标识符中可以使用的字符的定义大致相同:

字母,数字或下划线,从字母或下划线开始。

顺便说一句,java扩展了这条规则,因为它允许使用包括国家字母表在内的任何字母,而通常其他(至少较旧的)编程语言仅限于拉丁字母。

在您编写的所有字符中,我认为只有#理论上可以包含在允许用于标识符的字符列表中,但是他们决定不这样做,可能会考虑将来可能的Java版本这个角色将成为语言的一部分。

我认为在标识符中使用,;显然是不可能的。想想for运算符。

答案 2 :(得分:0)

您不能使用为JVM保留的任何charecter,它将这些charecter标识为seprators分隔符。它与使用" new"基本相同。关键字作为变量的名称,这是Java中的非法操作。