【发布时间】:2015-11-02 22:13:00
【问题描述】:
SO 上的许多地方都指向 Identifiers 上的 JLS 部分,但我对那里写的内容有疑问。
“Java 字母”包括大写和小写的 ASCII 拉丁字母 A-Z (\u0041-\u005a) 和 a-z (\u0061-\u007a),以及,对于历史 原因,ASCII 下划线(_,或 \u005f)和美元符号($,或 \u0024)。 $ 字符只能用于机械生成 源代码,或者很少访问旧版上已有的名称 系统。 “Java 数字”包括 ASCII 数字 0-9 (\u0030-\u0039)。
但它继续说:
字母和数字可能来自整个 Unicode 字符集, 它支持当今世界上使用的大多数书写脚本, 包括中文、日文和韩文的大套装。这个 允许程序员在他们的程序中使用标识符 用他们的母语写成。
我不明白这两个怎么可能都是真的。第一部分似乎明确规定了允许哪些字符,而第二部分似乎说允许更灵活。
我同意使用“包含”而不是“包含但不限于”表明它并不完全矛盾。但它也首先专门指“Java 字母”/“Java 数字”,然后将其放宽为“字母”/“数字”。我的主要观点是不够清晰,我想确认我认为的意思。
【问题讨论】:
-
你在哪里看到了矛盾?支持拉丁字母、一些符号、数字,现在还支持一些 Unicode 字符。
-
好的。诚然这没有错,但我仍然认为它具有误导性/不清楚。您是否同意 cui.unige.ch/isi/bnf/JAVA/identifier.html 正确且完整地代表了规范所说的内容?
标签: java identifier