モジュール java.base
パッケージ java.lang

クラスCharacter

java.lang.Object
java.lang.Character
すべての実装されたインタフェース:
Serializable, Comparable<Character>, Constable

public final class Character extends Object implements Serializable, Comparable<Character>, Constable
Characterクラスは、プリミティブ型charの値をオブジェクトにラップします。 クラスCharacterのオブジェクトには、タイプがcharである単一のフィールドが含まれます。

また、このクラスは、文字カテゴリ(小文字、数字など。)を決定するため、また大文字から小文字への変換やその逆のために多数の静的メソッドを提供します。

Unicode適合

Characterクラスのフィールドとメソッドは、Unicode規格(特にUnicode文字データベースの一部であるUnicodeDataファイル)からの文字情報に基づいて定義されます。 このファイルは、割り当てられたすべてのUnicodeコード・ポイントまたは文字範囲の名前およびカテゴリを含むプロパティを指定します。 このファイルは、http://www.unicode.orgのUnicode Consortiumから入手できます。

文字情報は、Unicode Standardバージョン15.1に基づいています。

Javaプラットフォームは、長期にわたって異なるバージョンのUnicode Standardをサポートしました。 新しいバージョンのUnicode Standardへのアップグレードは、それぞれ新しいバージョンを示す次のJavaリリースで行われました:

JavaリリースおよびサポートされているUnicodeバージョンを表示
Javaリリース Unicodeバージョン
Java SE 22 Unicode 15.1
Java SE 20 Unicode 15.0
Java SE 19 Unicode 14.0
Java SE 15 Unicode 13.0
Java SE 13 Unicode 12.1
Java SE 12 Unicode 11.0
Java SE 11 Unicode 10.0
Java SE 9 Unicode 8.0
Java SE 8 Unicode 6.2
Java SE 7 Unicode 6.0
Java SE 5.0 Unicode 4.0
Java SE 1.4 Unicode 3.0
JDK 1.1 Unicode 2.0
JDK 1.0.2 Unicode 1.1.5
これらの基本Unicodeバージョン(認識される付録など)のバリエーションについては、別の場所に記載されています。

Unicode文字表現

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

U+0000 - U+FFFFの文字セットは、基本多言語面(BMP)と呼ばれる場合もあります。 コード・ポイントがU+FFFFよりも大きい文字補助文字と呼ばれます。 Javaプラットフォームでは、char配列、Stringクラス、およびStringBufferクラスでUTF-16表現が使用されます。 この表現では、補助文字はchar値のペアとして表現され、上位サロゲート範囲(\uD800-\uDBFF)からの最初の値と、下位サロゲート範囲(\uDC00-\uDFFF)からの第2の値から構成されています。

したがって、char値は、サロゲート・コード・ポイントやUTF-16エンコーディングのコード単位を含む基本多言語面(BMP)コード・ポイントを表します。 int値は、補助コード・ポイントを含むすべてのUnicodeコード・ポイントを表します。 intの下位(最下位) 21ビットは、Unicodeコード・ポイントを表すために使用され、上位(最上位) 11ビットはゼロである必要があります。 特に指定されないかぎり、補助文字とサロゲートchar値に関する動作は次のとおりです。

  • char値だけを受け入れるメソッドは補助文字に対応できません。 これらのメソッドはサロゲート範囲のchar値を未定義の文字として扱います。 たとえば、Character.isLetter('\uD840')falseを返し、文字列でそのあとに下位サロゲート値が続く場合でも、この特定の値は文字を表します。
  • int値を受け入れるメソッドは、補助文字を含むすべてのUnicode文字に対応します。 たとえば、Character.isLetter(0x2F81A)は、コード・ポイント値が文字(CJK統合漢字)を表すため、trueを返します。

Java SE APIドキュメンテーションでは、U+0000 - U+10FFFFの範囲の文字値にUnicodeコード・ポイントを使用し、UTF-16エンコーディングのコード単位である16ビットchar値にUnicodeコード単位を使用します。 Unicode用語の詳細は、「Unicode Glossary」を参照してください。

これはvalue-basedクラスです。プログラマは、equalのインスタンスを交換可能として扱い、同期にインスタンスを使用しないようにする必要があります。そうしないと、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。

導入されたバージョン:
1.0
外部仕様
関連項目: