7

Java 允许标识符以 $ 开头或包含 $(美元符号)。例如 int a$b;

但是为什么在标识符中不允许使用 # 呢?具体原因是什么?# 是 Java 中的运算符还是什么?例如 int a#b;

4

3 回答 3

8

我想说它是可读性和语言历史渊源的结合。请记住,Java 语法旨在使 C 和 C++ 程序员易于使用。(正如@dan04 指出的那样,该#字符在 C 和 C++ 的大多数方言中都很重要。)

顺便说一句,虽然$Java 标识符在技术上是合法的,但它保留给编译器、代码生成器和其他东西使用。如果您$在源代码中使用 in 标识符,您可能会遇到与(例如)javac编译器生成的合成标识符发生冲突的麻烦。

于 2010-05-18T04:47:23.657 回答
3

我怀疑是否有一个特定的原因不允许#在标识符中使用标点符号(可能看起来像运算符)。为了处理 WORD_SEPARATION 和 Inner$Classes,做了一些特殊的例外。

在 Java 语法所基于的 C 和 C++ 中,#用于预处理器指令。

于 2010-05-18T04:47:22.550 回答
1

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

我想这是为了可读性 -int s#@t;看起来很奇怪。

于 2010-05-18T04:35:56.697 回答