当我宣布
时,一切都很好String a;
但是当我这样做时,它会在令牌“1”上显示语法错误,无效的VariableDeclaratorId
String 1;
为什么?
答案 0 :(得分:24)
嗯,首先,这是因为它是用Java语言规范编写的。
但是,也许这个例子会对你有所帮助:
String 1 = "toto"
System.out.println(1 + 2)
输出应该是什么?
答案 1 :(得分:7)
因为1
也是一个值(除其他外,您可以指定),解析器无法知道您的意思。
请考虑以下代码段:
int 1 = 10;
int a = 1; // what is the value of a ? 1 or 10?
因此,不允许使用数字开始变量名称。如果你真的想要,可以使用_1
(注意虽然很难阅读)
答案 2 :(得分:4)
Java语言规范中identifiers的规则规定您无法使用数字启动标识符。
答案 3 :(得分:3)
解析器无法将其与int文字区分开来,因此不允许使用它。
答案 4 :(得分:2)
解析器不仅需要花费大量精力来区分int
字面值和变量(如果不是完全不可能的话),而且最终会出现奇怪的情况:
int 1 = 999;
System.out.println(1);
// output: 1 or 999
基本上这没有多大意义。
答案 5 :(得分:0)
我想你可以。 它在我的机器上编译。
答案 6 :(得分:0)
因为1
是一个值。有人会怎么做:
String 1 = "6";
String s = 1 + "00"; // With value "100" or "600"?
同样,true
,false
,null
不能是变量名称。
答案 7 :(得分:0)
它也适用于我的机器: public static void main(String args []) {String l =“one”; } 我在jdk1.7