从Java语言规范Java SE 8 Edition(第3.8节)看来,Java字母似乎必须包含ASCII字母
“Java字母”包括大写和小写ASCII拉丁字母 A-Z(\ u0041- \ u005a)和a-z(\ u0061- \ u007a),以及历史 原因,ASCII下划线(_,或\ u005f)和美元符号($,或 \ u0024)。 $符号只能用于机械生成 源代码,或者很少访问遗留的预先存在的名称 系统
但可能不包含其他Unicode字母(因为以下句子包含可能而非必须):
可以从整个Unicode字符集中绘制字母和数字, 它支持当今世界上使用的大多数编写脚本, 包括中文,日文和韩文的大套。这个 允许程序员在他们的程序中使用标识符 用他们的母语写成。
即使它不支持标识符中的非ASCII字母,实现是否符合规范是否正确?
如果是这种情况,那么句子“这允许程序员在他们的程序中使用用他们的母语编写的标识符。”没有多大意义 - 因为它建议使用哪些功能可能并非所有实现都支持。
答案 0 :(得分:2)
我认为你在这里误解了“可能”一词的用法。该句子应被理解为“它是允许从整个Unicode字符集中绘制字母和数字,......”
因此,实现必须支持整个Unicode集。