为什么标识符中不允许#?

时间:2010-05-18 04:29:43

标签: java identifier

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

但是为什么标识符中不允许#?具体原因是什么? #是运营商还是Java中的东西? 例如,a#b;

3 个答案:

答案 0 :(得分:8)

我会说这是可读性与语言历史前因的结合。请记住,Java语法旨在让C和C ++程序员轻松上手。 (正如@ dan04指出的那样,#字符在大多数C和C ++方言中都很重要。)

顺便提一下,虽然$在Java标识符中是技术合法的,但它保留供编译器,代码生成器和其他东西使用。如果在源代码中的标识符中使用$,则可能会遇到与(例如)javac编译器生成的合成标识符冲突的问题。

答案 1 :(得分:3)

我怀疑有一个特定原因禁止#,因为对标识符中的标点符号(可能看起来像操作符)一般厌恶。为了处理WORD_SEPARATION和Inner $ Classes,我们做了特殊的例外。

在Java语法所基于的C和C ++中,#用于preprocessor指令。

答案 2 :(得分:1)

Variables可以包含字母,数字,下划线和美元符号 - 不包括#,@,〜,`

我想这是为了便于阅读 - int s#@t;似乎很奇怪。