5/28/2006

Why is hyphen (-) an illegal char in Java identifier? Why can't we use variable names like first-name, as we do in xml files? The answer to this question is not hard, but the challenge is, can you answer it in 1 minute. I didn't.

First, hyphen is the same symbol as the arithmetic operator minus. So for variables like first-name, we don't know if it's a single variable named first-name, or the numeric variable first minus another numeric variable name. Neither does the compiler. So the easiest solution is to disallow -. XML is a markup mark-up language, not programming language, so hyphen is no problem there.

Secondly, hyphen is already used in other operators like ->, though it's not in Java yet. If you have an expression like first-result->second, you don't know if it's a pointer operation, or a comparison between first-result- and second. Java has rejected -> from C++, but maybe one day it will take it from PHP.