【Java】Character.charCount()メソッドの使い方を具体例付きで解説
Character.charCount()メソッドとは
Character.charCount()メソッドは、指定された文字(Unicodeコードポイント)を表すために必要なchar値の数を判定するためのメソッドです。
動作ルールはシンプルで、以下のように決まっています。
- 指定されたコードポイントが0x10000以上の場合 → 2を返す
- 指定されたコードポイントが0x10000未満の場合 → 1を返す
これは、Unicodeにおいて0x10000以上のコードポイント(いわゆる補助文字)が、サロゲートペアと呼ばれる2つのchar値(各16ビット)で表現されるためです。したがって、あるコードポイントが補助文字であるかどうかを判別したい場面で、このメソッドが非常に役立ちます。
使用例1:補助文字の判定
まずは、コードポイントが補助文字であるかどうかをcharCount()メソッドで判定する例を見てみましょう。
import java.lang.*;
public class Demo {
public static void main(String[] args) {
// int型のコードポイントcpを作成して値を代入
int cp = 0x12345;
// 結果を受け取るint型変数res
int res;
// cpに対するcharCount()の結果をresに代入
res = Character.charCount(cp);
String str1 = "有効な補助文字ではありません";
String str2 = "有効な補助文字です";
// resの値を出力
if ( res == 1 ) {
System.out.println( str1 );
} else if ( res == 2 ) {
System.out.println( str2 );
}
}
}出力結果
有効な補助文字です
この例では、コードポイント0x12345は0x10000以上のため、charCount()メソッドは2を返し、「有効な補助文字です」というメッセージが出力されています。
使用例2:戻り値の直接確認
続いて、もう少しシンプルな例で戻り値を直接確認してみましょう。
import java.lang.*;
public class Demo {
public static void main(String[] args) {
int c = 0x11987;
int res = Character.charCount(c);
System.out.println(res);
}
}出力結果
2
コードポイント0x11987も0x10000以上であるため、戻り値は2となりました。
まとめ
- charCount(int codePoint)は、指定したコードポイントの表現に必要なchar値の数を返す
- 0x10000以上なら2(サロゲートペア)、未満なら1
Character.isSupplementaryCodePoint()などと組み合わせると、文字コードの検証処理をより堅牢にできる
-
Java StreamのfindAny()メソッドの使い方を例付きで解説
Java Stream APIのfindAny()メソッドは、ストリーム内のいずれか1つの要素を返すメソッドです。戻り値はOptional型で、ストリームが空の場合には空のOptionalが返されます。ここでいうOptionalとは、null以外の値を保持している場合と保持していない場合があるコンテナオブジェクトのことです。findAny()は並列処理(parallel stream)との相性が良く、どの要素が返されても問題ない場合に効率的に動作するのが特徴です。基本的な構文Optional<T> result = stream.findAny();例1:整数のリストからfindA
-
【初心者向け】JavaのArrayListメソッド完全ガイド|コード例つきで解説
この記事では、JavaのArrayListでよく使われる主要なメソッドを、実行結果つきのコード例とともにわかりやすく解説します。 ArrayListクラスは、サイズを自由に変更できる「可変長配列」です。リストの要素数が事前にわからない場合に特に便利で、Javaの開発現場で最も広く使われているコレクションの一つです。 ArrayListクラスは、java.utilパッケージに含まれています。 ArrayListの作成方法 ArrayListを作成して要素を追加するには、StringやIntegerなど扱いたい型を指定してArrayListオブジェクトをインスタンス化します。 なお、add()メソ