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

标签 java identifier

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

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

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

最佳答案

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

h = foo - -velocity

这是从 foo 中减去负速度,还是先求负速度,然后从 foo 中减去它?其他角色也是如此,例如既用作属性访问运算符 (foo.bar) 又用作 float (.78) 的一部分。这个 list 还在继续。

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

关于java - 为什么有些标识符在java中是非法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448923/

相关文章:

java - JVM 尖括号中的标识符导致内部方法错误

docker - 在 Docker Swarm 中,如何找到哪个节点 IP 正在运行给定任务?

azure - 可以将逻辑应用程序运行历史记录标识符放入逻辑应用程序操作输入字段中吗?

java - 在Java中实现Comparator类

java - FileInputStream 找不到文件

java - quartz 和 mysql 的自动模式创建失败并出现 MySQLSyntaxException

java <identifier> 期望在初始化变量时

java - 找不到/lib/libJOCL-linux-x86.so

java - Spring非托管对象的 Autowiring

c - 宏名称必须是标识符