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.
精彩评论