代码之家  ›  专栏  ›  技术社区  ›  Ravi Gupta

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

  •  0
  • Ravi Gupta  · 技术社区  · 16 年前

    我申报的时候一切都很好

    String a;
    

    但上面写着 标记“1”上的语法错误,variabledeclaratorID无效 当我这样做的时候

    String 1;
    

    为什么会这样?

    8 回复  |  直到 13 年前
        1
  •  24
  •   gizmo    16 年前

    首先,因为它是用Java语言规范编写的。

    但是,也许这个例子可以帮助您:

    String 1 = "toto"
    System.out.println(1 + 2)
    

    输出应该是什么?

        2
  •  7
  •   laura    16 年前

    因为 1 也是一个值(除其他外,您可以指定),解析器不知道您的意思。

    请考虑以下代码段:

    int 1 = 10;
    int a = 1; // what is the value of a ? 1 or 10?
    

    因此,不允许以数字开头变量名。你可以使用 _1 相反,如果你真的想要(请注意,这是很难读懂)

        3
  •  4
  •   Mark    16 年前

    规则 identifiers 在Java语言规范状态中,您不能用数字启动标识符。

        4
  •  3
  •   Ignacio Vazquez-Abrams    16 年前

    解析器无法将它与int文本区分开来,因此它是不允许的。

        5
  •  2
  •   bruno conde    16 年前

    不仅解析器会做出很大的努力来区分 int 文字和变量(如果不是完全不可能的话),但最终可能会出现奇怪的情况,如:

    int 1 = 999;
    System.out.println(1);
    
    // output: 1 or 999
    

    基本上这没什么意义。

        6
  •  0
  •   walter    16 年前

    我想你可以。 它在我的机器上编译。

        7
  •  0
  •   fastcodejava    16 年前

    因为 1 是一个值。有人会如何看待这个问题:

    String 1 = "6";
    String s = 1 + "00";    // With value "100" or "600"?
    

    同样地, true , false , null 不能是变量名。

        8
  •  0
  •   javaExpert    16 年前

    它也在我的机器上工作: 公共静态void main(字符串参数[]) string l=“一”; 我在JDK1.7上