为何Java中可声明$为标识符(int $=24;)却不能用_(int _=24;)?
问题解答
这是因为Java 9及更高版本将单独的下划线_列为了保留标识符,禁止将其用作变量名或其他标识符,而美元符号$并未受到这个限制。
- 在Java 8及更早版本中,单独的
_确实是合法的标识符,符合你提到的“以下划线开头”的规则,此时声明int _=24;不会报错。 - 从Java 9开始,Oracle把单独的
_标记为保留字,目的是为未来的语言特性预留(比如用作Lambda表达式中未使用参数的占位符),所以此时再用_作为变量名就会触发编译错误,错误信息通常是'_' is not a valid identifier。
至于美元符号$,虽然Java语法允许它作为标识符开头,但官方并不推荐开发者主动使用——因为它通常被编译器用来生成自动代码中的标识符(比如内部类的名称)。不过语法上它始终是合法的,所以int $=24;在所有Java版本中都能正常编译。
内容的提问来源于stack exchange,提问作者Kulsoom Owais
相关产品推荐
相关产品推荐

