为什么不能在标识符中使用“#”、“.”、“:”?

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 运算符。