为什么标识符不能以java中的数字开头

Rıf*_*hin 4 java

除了"数字串将是有效的标识符以及有效数字"之外,我想不出任何其他内容.

除了这个之外还有其他解释吗?

dat*_*olf 12

因为这会使符号名称中的数字文字成为一个严肃的PITA.

例如,对于第一个字符有效的数字,名称的变量0xdeadbeef0xc00lcafe有效.但这也可以解释为十六进制数.通过将符号的第一个字符限制为非数字,避免了这种歧义.


Rei*_*eus 8

如果可以,那么这项任务将是可能的

int 33 = 44; // oh oh 
Run Code Online (Sandbox Code Playgroud)

那么JVM如何区分数字文字和变量呢?

  • 我记得一个FORTRAN编译器(在旧的旧小型机上)允许语句"DO 10 1 = 0 TO 10"(相当于`for(1 = 0; 1 <= 10; 1 ++)`).当我们查看反汇编代码时,它确实将0分配给了`1`的文字.(显然这是一个编译器错误,但是在这个时间范围内这样的错误并不罕见.)错误很难找到,因为在电传打印输出上"1"和"I"看起来非常相似. (3认同)
  • 另外:如果你之后"返回33 + 1" - 它应该返回"34"还是"45"? (2认同)
  • 像"标识符名称必须至少包含一个字母字符"这样不太严格的规则可以避免这种情况.因此,您的示例并未说明标识符不能以数字开头的原因. (2认同)