\ u65549是一个有效的Java标识符吗?

时间:2016-04-04 13:00:04

标签: java identifier

我有这些陈述:

int \u65549 = 9;
System.out.println(\u65549);

这完美编译。和输出

9

但是:

System.out.println(Character.isJavaIdentifierStart(\u65549));

输出

false

<小时/> 我做了一些关于这个主题的研究。我阅读了文档,并说:

  

此方法无法处理补充字符。要支持所有Unicode字符(包括增补字符),请使用isJavaIdentifierStart(int)方法。

然后我这样做了:

int x = \u65549;
System.out.println(Character.isJavaIdentifierStart(x));

但即便如此:

false

那么,这是否意味着Java混淆了\u65549作为标识符?

2 个答案:

答案 0 :(得分:8)

int \u65549 = 9;
System.out.println(Character.isJavaIdentifierStart(\u65549));

此处,\u65549是变量的名称,也恰好包含值9。它应该(并且确实)像你写的那样做:

System.out.println(Character.isJavaIdentifierStart(9));

打印false,因为您没有以空白字符开头的Java标识符(\u0009是HORIZONTAL TAB的代码点,'\t')。

答案 1 :(得分:2)

\u65549被解释为unicode字符\u6554,后跟字符9

这是String中的有效语法。

除此之外,\u65549不是有效的unicode标识符。 字符串仅在遇到unicode前缀(4)时获取有效部分(十六进制范围内的\u个字符),因此它只接受有效的标识符部分,并获取有效字符。