我理解为什么标识符不能以数字或"-"开头。
为什么不能'#'、'。(点)和":"(冒号)用作标识符的一部分?
不应该"不是和确切的定义。最好使用"不得"或"不能"。
一旦我们改变了一个问题,我们就可以回答它。原因是这样定义了Java编程语言。所以,你可以说"为什么Java创建者定义了这样的规则?
可以有几个答案。最相关的(恕我直言)之一是所有编程语言(至少我知道的那些)对标识符中可以使用的字符都有或多或少相同的定义:
字母、数字或下划线,从字母或下划线开始。
顺便说一下,java扩展了这个规则,因为它允许使用任何字母,包括国家字母,而通常其他(至少是较旧的)编程语言将其限制为仅拉丁字母。
在您编写的所有字符中,我认为理论上只有#
可以包含在允许用于标识符的字符列表中,但他们决定不这样做,可能是考虑到 java 的未来版本,其中这个字符可能将成为语言的一部分。
我认为在标识符中使用,
和;
显然是不可能的。考虑一下for
操作员。
来自Java语言规范:
这些标识符是无限长度的 Java 字母和 Java 数字序列,其中第一个必须是 Java 字母。
。"Java 字母"是方法
Character.isJavaIdentifierStart(int)
返回 true 的字符。
不是Java字母,所以你不能从这些字母开始。 $
,但这种用法更保留给内部类。
不能使用为 JVM 保留的任何字符,这会将这些字符标识为分隔符。 它与使用"new"关键字作为变量名称基本相同,这在Java中是非法操作。