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

问题描述 投票:0回答:1

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

标识符不能以数字等开头(“:”、“-”、“e#”、“.f”等)

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

java identifier
1个回答
8
投票

原因是你想让解析语言变得更容易,并防止出现歧义的情况。假设您可以将变量称为“-velocity”而不是“negative_velocity”。现在这个词是什么意思?

h = foo - -velocity

这是从 foo 中减去负速度,还是先将速度取负,然后再从 foo 中减去?其他角色也是如此,例如既用作属性访问运算符 (foo.bar) 又用作浮点数 (.78) 的一部分。名单还在继续。

可以允许这一切,但是你必须有一个多阶段的解析过程,你必须解析一次标识符声明的源代码,然后再次解析它再次,尝试找出在哪里他们被使用了。这样,您也可能最终陷入这样一种情况:您通过导入使现有代码无效,而这些代码在那之前一直是明确的,但现在例如声明“-velocity”作为标识符,那么上面的表达式是不明确的。

© www.soinside.com 2019 - 2024. All rights reserved.