编译器可以识别 Unicode 转义并将其转换为 UTF-16。ch\\u0061r将成为char有效的原始类型。故D选项正确。
\n\n\n3.3. Unicode 转义
\n\nJava 编程语言的编译器(“Java 编译器”)首先识别其输入中的 Unicode 转义符,将 ASCII 字符 \\u 后跟四个十六进制数字转换为 UTF-16 代码单元 (\xc2\xa73.1)指示十六进制值,并不变地传递所有其他字符。
\n
\\u0061将被翻译为a可用于形成标识符的有效 Java 字母。故选项C正确。
\n\n3.8. 身份标识
\n\n标识符是由 Java 字母和 Java 数字组成的无限长度序列,其中第一个必须是 Java 字母。
\n\nRun Code Online (Sandbox Code Playgroud)\n\nIdentifier:\n IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral\nIdentifierChars:\n JavaLetter {JavaLetterOrDigit}\nJavaLetter:\n any Unicode character that is a "Java letter"\nJavaLetterOrDigit:\n any Unicode character that is a "Java letter-or-digit"\n\n\n
Character.isJavaIdentifierStart(int)“Java 字母”是该方法返回的字符true。“Java 字母或数字”是该方法
\n\nCharacter.isJavaIdentifierPart(int)返回的字符true。“Java 字母”包括大写和小写 ASCII 拉丁字母 AZ (
\n\\u0041-\\u005a) 和 az (\\u0061-\\u007a),并且由于历史原因,还包括 ASCII 美元符号 ($, 或\\u0024) 和下划线 (_, 或\\u005f)。美元符号只能用在机械生成的源代码中,或者很少用于访问遗留系统上预先存在的名称。下划线可以用在由两个或多个字符组成的标识符中,但由于是关键字,因此不能用作单字符标识符。