1

私の知る限り、JRE が Java アプリケーションを実行すると、文字列は内部的に USC2 バイト配列として認識されます。ウィキペディアでは、次のコンテンツを見つけることができます。

Java はもともと UCS-2 を使用していましたが、J2SE 5.0 で UTF-16 補助文字サポートを追加しました。

Java (Java 7) の新しいリリース バージョンでは、その内部文字エンコーディングは何ですか?
Java が内部で UCS-4 を使用し始める可能性はありますか?

4

2 に答える 2

4

Java 7は引き続き内部でUTF-16を使用し(Charset Javadocの最後のセクションを読んでください)、UCS-4に変更される可能性はほとんどありません。その理由を2つ挙げます。

  1. UCS-2 => UCS-4から変更するということは、charプリミティブを16ビット型から32ビット型に変更する必要があることを意味する可能性があります。過去にSun/Oracleが下位互換性をどれほど高く評価してきたかを見ると、このような変更はほとんどありません。
  2. ほとんどのユースケースでは、UCS-4はUTF-16でエンコードされた文字列よりもはるかに多くのメモリを消費します。
于 2012-11-27T03:45:53.980 に答える
0

Q:私の知る限り、JREがJavaアプリケーションを実行すると、文字列は(16ビットUnicode)バイト配列として表示されます。

A:はい

Q:新しいリリースバージョンのJava(Java 7)では、その内部文字エンコードとは何ですか?

A:同じ

Q:JavaがUCS-4を内部で使用し始める可能性はありますか?

A:そのようなことは聞いたことがありません

ただし、「コードポイント」を使用して、Java5以降でUTF-32文字を実装できます。

于 2012-11-27T03:47:04.930 に答える