为什么不能在标识符中使用“#”、“.”、“:”?
Why can't '#', '.', ':' be used in identifiers?
我明白为什么标识符不能以数字或“-”开头。
为什么不能使用“#”、“.” (点)和“:”(冒号)用作标识符的一部分?
来自Java Language Specification:
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.
... A "Java letter" is a character for which the method Character.isJavaIdentifierStart(int)
returns true.
这些不是 Java 个字母,因此您不能从这些字母开始。 $
是 ,但该用法更多地保留给内部 类。
您不能使用任何为 JVM 保留的字符,JVM 将这些字符标识为分隔符分隔符。它与使用 "new" 关键字作为变量名称基本相同,这在 Java.
中是非法操作
"Should not" 不是准确的定义。最好使用 "must not" 或 "cannot"。
一旦我们改变了一个问题,我们就可以回答它。原因是 java 编程语言是这样定义的。所以,你可以 "why did java creators defined such rules?"
可以有几个答案。最相关的(恕我直言)之一是所有编程语言(至少是我所知道的)对于标识符中可以使用哪些字符都有或多或少相同的定义:
字母、数字或下划线,以字母或下划线开头。
顺便说一下,java 扩展了这条规则,因为它允许使用任何字母,包括国家字母表,而通常其他(至少较旧的)编程语言将其限制为仅拉丁字母。
在你写的所有字符中,我认为只有 #
理论上可以包含在允许用于标识符的字符列表中,但他们决定不这样做可能是在考虑 java 的未来版本,其中可能这个字符会成为语言的一部分。
我认为在标识符中使用,
和;
显然是不可能的。想想 for
运算符。
我明白为什么标识符不能以数字或“-”开头。
为什么不能使用“#”、“.” (点)和“:”(冒号)用作标识符的一部分?
来自Java Language Specification:
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.
... A "Java letter" is a character for which the method
Character.isJavaIdentifierStart(int)
returns true.
这些不是 Java 个字母,因此您不能从这些字母开始。 $
是 ,但该用法更多地保留给内部 类。
您不能使用任何为 JVM 保留的字符,JVM 将这些字符标识为分隔符分隔符。它与使用 "new" 关键字作为变量名称基本相同,这在 Java.
中是非法操作"Should not" 不是准确的定义。最好使用 "must not" 或 "cannot"。
一旦我们改变了一个问题,我们就可以回答它。原因是 java 编程语言是这样定义的。所以,你可以 "why did java creators defined such rules?"
可以有几个答案。最相关的(恕我直言)之一是所有编程语言(至少是我所知道的)对于标识符中可以使用哪些字符都有或多或少相同的定义:
字母、数字或下划线,以字母或下划线开头。
顺便说一下,java 扩展了这条规则,因为它允许使用任何字母,包括国家字母表,而通常其他(至少较旧的)编程语言将其限制为仅拉丁字母。
在你写的所有字符中,我认为只有 #
理论上可以包含在允许用于标识符的字符列表中,但他们决定不这样做可能是在考虑 java 的未来版本,其中可能这个字符会成为语言的一部分。
我认为在标识符中使用,
和;
显然是不可能的。想想 for
运算符。