为什么Java变量名不能以数字开头?

Mal*_*nda 7 java

在Java中,变量名称以字母,货币字符($)等开头,但不包含数字:,或.

简单的问题:为什么?

为什么编译器不允许使用变量声明

int 7dfs;
Run Code Online (Sandbox Code Playgroud)

Bat*_*eba 28

简而言之,它将破坏语言语法的各个方面.

例如,将7f是变量名称,或者是值为7?的浮点字面值.

您也可以召唤其他人:如果.被允许则会与成员选择运算符发生冲突:foo.bar它本身就是一个标识符,还是它是bar对象实例的字段foo


Gho*_*ica 15

因为Java语言规范如此说:

IdentifierChars:

JavaLetter {JavaLetterOrDigit}

所以 - 是的,标识符必须以字母开头; 它不能以数字开头.

背后的主要原因:

  • 这简直是​​大多数人的期望
  • 当你限制标识符的"布局"时,它可以更容易地解析源代码(很多); 例如,它减少了文字和变量名之间可能存在的歧义.