开发者

Why # is not allowed in an identifier?

Java allows identifier to start with or contain $ (dollar 开发者_开发问答sign). e.g int a$b;

But why # is not allowed in an identifier? What is the specific reason? Is # an operator or something in Java? e.g int a#b;


I'd say that it is a combination of readability and the historical antecedents of the language. Remember that the Java syntax was designed to be easy-on-the-eye for C and C++ programmers. (And as @dan04 points out, the # character is significant in most dialects of C and C++.)

Incidentally, while $ is technical legal in Java identifiers, it is reserved for use by compilers, code generators and other things. If you use $ in identifiers in your source code, you risk getting into trouble with collisions with synthetic identifiers produced by (for example) the javac compiler.


I doubt there was a specific reason for disallowing # as much as there was a general aversion to punctuation in identifiers (which could look like operators). Special exceptions were made in order to deal with WORD_SEPARATION and Inner$Classes.

In C and C++, on which Java's syntax is based, # is used for preprocessor directives.


Variables can contain letters, digits, underscores and dollar signs - excluding #, @, ~ ,`

I guess this is for the sake of readability - int s#@t; seems odd.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜