在java中,为什么我可以声明一个名为“a”而不是“1”的变量?

时间:2010-01-27 11:11:23

标签: java variables declaration

当我宣布

时,一切都很好
String a;

但是当我这样做时,它会在令牌“1”上显示语法错误,无效的VariableDeclaratorId

String 1;

为什么?

8 个答案:

答案 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"?

同样,truefalsenull不能是变量名称。

答案 7 :(得分:0)

它也适用于我的机器: public static void main(String args []) {String l =“one”; } 我在jdk1.7