Search code examples
javaidentifier

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;


Solution

  • 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.