为什么我不能将一个字符串绑定到Java中的unicode城堡字符?

Dog*_*Dog 15 java unicode syntax

class A {
    public static void main(String[] args) {
        char a = '?';
        System.out.println(a);
        char castle = '';
        System.out.println(castle);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以为颠倒的A做一个char很好,但是当我尝试使城堡char时它会得到3个编译错误.为什么?

$ javac A.java && java A
A.java:5: unclosed character literal
        char castle = '';
                      ^
A.java:5: illegal character: \57159
        char castle = '';
                        ^
A.java:5: unclosed character literal
        char castle = '';
                         ^
3 errors
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 15

我怀疑城堡角色不适合单一char,而是需要一个int代码点.在这种情况下,您可以在String文字中使用它,但不能在文字中使用它char.

Character状态的Javadoc :

char数据类型(以及Character对象封装的值)基于原始Unicode规范,该规范将字符定义为固定宽度的16位实体.此后,Unicode标准已更改为允许表示形式需要16位以上的字符.合法代码点的范围现在是U + 0000到U + 10FFFF,称为Unicode标量值.

所以我的猜测是该字符需要超过16位,因此需要将其视为int代码点.