15
class A {
    public static void main(String[] args) {
        char a = '∀';
        System.out.println(a);
        char castle = '';
        System.out.println(castle);
    }
}

逆さまの 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
4

3 に答える 3

15

城のキャラクターは単一の に収まらず、charむしろintコードポイントが必要だと思います。その場合、Stringリテラルで使用できますが、としては使用できませんchar

状態の Javadoc Character:

char データ型 (したがって Character オブジェクトがカプセル化する値) は、文字を固定幅の 16 ビット エンティティとして定義した元の Unicode 仕様に基づいています。Unicode 標準はその後、表現に 16 ビット以上を必要とする文字を許可するように変更されました。有効なコード ポイントの範囲は、Unicode スカラー値として知られる U+0000 から U+10FFFF になりました。

私の推測では、その文字には 16 ビット以上が必要なので、intコード ポイントとして扱う必要があります。

于 2013-05-24T21:24:27.280 に答える