为什么#符号不能用作标识符?

6

Java允许标识符以$(美元符号)开头或包含$。

例如 int a$b;

但为什么#不能用作标识符?具体原因是什么?在Java中,#是操作符还是其他东西?

例如 int a#b;


因为这就是他们设计的方式。自从1971年以来,我使用过很多编程语言,但从未见过允许在标识符中使用“#”的。 - undefined
3个回答

8
我认为这是可读性和语言历史渊源的结合体。请记住,Java语法旨在让C和C++程序员轻松阅读。(正如@dan04所指出的,在大多数C和C++方言中,#字符具有重要意义。)
顺便说一下,虽然$在Java标识符中是技术上合法的,但它被保留供编译器、代码生成器和其他东西使用。如果您在源代码中的标识符中使用$,则可能会与javac编译器生成的合成标识符发生冲突,从而导致问题。

3
我怀疑禁止使用#并没有特定的原因,更多的是对标识符中标点符号的一般厌恶(这些标点符号可能看起来像运算符)。为了处理WORD_SEPARATION和Inner$Classes,做出了特殊的例外。
在Java语法基于的C和C++中,#用于预处理指令。

1

变量可以包含字母、数字、下划线和美元符号,但不包括 #、@、~、` 符号。

我猜这是为了可读性而设置的 - int s#@t;看起来很奇怪。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接