为什么有些标识符在java中是非法的?

为什么有些标识符在java中是非法的?,java,identifier,Java,Identifier,众所周知,java中的合法标识符是那些必须以字母、货币字符($)或连接字符(如下划线)开头的标识符 标识符不能以数字和其他类似的符号开头(“:”、“-”、“e#“、.f”等) 因此,我的问题是,为什么java将这些关键字限制为非法标识符。原因是您希望简化对语言的解析,并防止出现歧义情况。假设您可以将一个变量称为“-速度”,而不是“负速度”。这个词是什么意思 h = foo - -velocity 这是从foo中减去负速度,还是从foo中减去负速度?其他字符也是如此,例如用作属性访问运算符(fo

众所周知,java中的合法标识符是那些必须以字母、货币字符($)或连接字符(如下划线)开头的标识符

标识符不能以数字和其他类似的符号开头(“:”、“-”、“e#“、.f”等)


因此,我的问题是,为什么java将这些关键字限制为非法标识符。

原因是您希望简化对语言的解析,并防止出现歧义情况。假设您可以将一个变量称为“-速度”,而不是“负速度”。这个词是什么意思

h = foo - -velocity
这是从foo中减去负速度,还是从foo中减去负速度?其他字符也是如此,例如用作属性访问运算符(foo.bar)和部分浮点(.78)的点。名单还在继续


您可以允许所有这些,但是您必须有一个多阶段的解析过程,在这个过程中,您必须对源代码进行一次标识符声明解析,然后再次解析,以尝试找出它们的使用位置。这样,您也可能会遇到这样一种情况:您通过导入使现有代码失效,直到那时,这些代码都是明确的,但现在,例如,声明“-velocity”作为标识符,然后上述表达式是模糊的)

,因为这些字符在语言中已经有其他含义了?Juhana,我不这么认为,让我们看看这个变量声明,
int:a:在增强的for循环中使用,-是减法。用于访问成员。想想一个变量可以使用的所有地方,而不仅仅是它的declaration@RichardTingle哦!对你是对的。。塔克斯