\u65549 是有效的 Java 标识符吗?
Is \u65549 a valid Java identifier?
我有这些声明:
int \u65549 = 9;
System.out.println(\u65549);
编译完美。并输出
9
但是:
System.out.println(Character.isJavaIdentifierStart(\u65549));
产出
false
我对这个话题做了一些研究。我阅读了文档,上面写着:
This method cannot handle supplementary characters. To support all Unicode characters, including supplementary characters, use the isJavaIdentifierStart(int)
method.
然后我这样做了:
int x = \u65549;
System.out.println(Character.isJavaIdentifierStart(x));
但即使这样打印:
false
那么,这是否意味着 Java 对 \u65549
作为标识符感到困惑?
\u65549
被解释为 unicode 字符 \u6554
,后跟字符 9
.
这是 String
中的有效语法。
除此之外,\u65549
不是有效的 unicode 标识符。
String在遇到unicode前缀(\u
)时只取有效部分(4
十六进制范围内的字符),所以它只取有效标识符部分,得到一个有效字符。
int \u65549 = 9;
System.out.println(Character.isJavaIdentifierStart(\u65549));
这里,\u65549
是一个变量的名称,它也恰好包含值9
。它应该(并且确实)和你写的一样:
System.out.println(Character.isJavaIdentifierStart(9));
打印 false
,因为你不能有一个以空白字符开头的 Java 标识符(\u0009
是 HORIZONTAL TAB 的代码点,'\t'
) .
我有这些声明:
int \u65549 = 9;
System.out.println(\u65549);
编译完美。并输出
9
但是:
System.out.println(Character.isJavaIdentifierStart(\u65549));
产出
false
我对这个话题做了一些研究。我阅读了文档,上面写着:
This method cannot handle supplementary characters. To support all Unicode characters, including supplementary characters, use the
isJavaIdentifierStart(int)
method.
然后我这样做了:
int x = \u65549;
System.out.println(Character.isJavaIdentifierStart(x));
但即使这样打印:
false
那么,这是否意味着 Java 对 \u65549
作为标识符感到困惑?
\u65549
被解释为 unicode 字符 \u6554
,后跟字符 9
.
这是 String
中的有效语法。
除此之外,\u65549
不是有效的 unicode 标识符。
String在遇到unicode前缀(\u
)时只取有效部分(4
十六进制范围内的字符),所以它只取有效标识符部分,得到一个有效字符。
int \u65549 = 9;
System.out.println(Character.isJavaIdentifierStart(\u65549));
这里,\u65549
是一个变量的名称,它也恰好包含值9
。它应该(并且确实)和你写的一样:
System.out.println(Character.isJavaIdentifierStart(9));
打印 false
,因为你不能有一个以空白字符开头的 Java 标识符(\u0009
是 HORIZONTAL TAB 的代码点,'\t'
) .