Java 允许标识符以 $(美元符号)开头或包含 $(美元符号)。 例如 int a$b;
但是为什么标识符中不允许使用 # 呢?具体原因是什么? #是Java中的运算符还是其他什么东西? 例如 int a#b;
我想说它是可读性和语言历史背景的结合。请记住,Java 语法的设计目的是让 C 和 C++ 程序员易于理解。 (正如 @dan04 指出的,
#
字符在 C 和 C++ 的大多数方言中都很重要。)
顺便说一句,虽然
$
在 Java 标识符中在技术上是合法的,但它保留供编译器、代码生成器和其他东西使用。如果您在源代码中的标识符中使用 $
,则可能会遇到与(例如)javac
编译器生成的合成标识符发生冲突的问题。
我怀疑禁止使用
#
是有特定原因的,因为人们普遍厌恶标识符中的标点符号(这可能看起来像运算符)。为了处理 WORD_SEPARATION 和 Inner$Classes,做出了特殊例外。
在 Java 语法所基于的 C 和 C++ 中,
#
用于 预处理器 指令。