Character

Javaでは、文字列データを扱うクラスにCharacter,String,StringBuffer,StringBuilder(Java5より)が提供されています。
プリミティブ型のchar型のラッパークラスであるCharacterクラスについて説明します。
Oracle社Java8APIもご参照下さい。

Characterクラスは、'a','z'などのUnicodeで表現できる単一文字を格納するクラスです。

一度生成されたCharacterクラスの値を変更することができない性質があります。

コンストラクタ

Characterのコンストラクタ
new Character( char型 );
Characterオブジェクトの生成
    Character token = new Character(',');
					 

charとCharcterの違い

chart型とCharcterクラスの使い分けについて説明します。

  • DTO(Data Transfer Object)は、ある一定の意味ある情報の纏まりを管理するユーザが作成したクラスです。
    DTOは、データを格納し、何かしらの処理の引数や戻り値になります。
    DTOに定義するメンバー変数は全てプリミティブ型のラッパークラスや、String、オブジェクト型のクラスです。
    DTOがプリミティブ型でメンバー変数を利用しない理由は、DTOからJSONデータへの変換やその逆の変換など、
    DTOを何かしらの形式に変換するライブラリの多くはオブジェト型のクラスをメンバー変数に持っている事を期待しています。
  • プリミティブ型の初期値は、'¥u0000'です。対してCharcarter型の変数の初期値はnullです。
    これはデータを格納するDTOの時に重要な意味を示しています。初期値がnullは、何も値を設定していない事を意味し、
    明らかに'¥u0000'とは異なります。'¥u0000'の場合ですと、例えばDBから取得した値か判別できません。
  • プリミティブ型がよりラッパークラスのオブジェクト型のクラスの方がメモリを多く利用します。
    これは、ラッパークラスのコンストラクタ、メソッド、定数などの定義分容量を多く必要とするからです。
  • 以上より、ビジネスシステムの作成でDTOを利用するクラス、メソッドはCharacterを利用します。
  • char型を利用する場合には、BufferedReaderを利用してファイルの文字を1文字ずつ操作する場合などに利用します。

インスタンスメソッド

Characterのインスタンスメソッドで利用頻度の高いメソッドについて説明します。

インスタンスメソッドの利用方法
    char a = 'あ';
    Character aObj = new Character( a );
    戻り値型 変数名 = aObj.メソッド名( 引数がある場合引数 );
					
戻り値 メソッド 説明
char charValue() インスタンスに格納されているchar型の値を返します。
int compareTo( Character ) メソッドを実行したインスタンスのcharと引数のcharを数値として比較します。
値が等しい場合には、0を返します。
引数の方が小さい値には、正の整数を返します。
引数の方が大きい値には、負の整数を返します。
boolean equals( Character ) このインスタンスが保持しているchar型の値と指定されたオブジェクトの値が等しいか比較します。
等しい場合には、trueを返します。
異なる場合には、falseを返します。
String toString() インスタンスの保持しているchar型の文字をStringオブジェクトにして返します。
インスタンスメソッドのサンプル
    Character aObj = new Character( 'a' );
    Character bObj = new Character( 'a' );
    Character cObj = aObj;

    if( aObj.equals( bObj ) ){
        System.out.println("値は一致しています。");
    } else {
        System.out.println("値は一致していません。");
    }
    if( cObj == bObj ){
        System.out.println("インスタンスは一致しています。");
    } else {
        System.out.println("インスタンスは一致していません。");
    }
					

文字列の比較には、equalsを利用します。 == はインスタンスが同一であるかの比較です。

クラスメソッド

Characterのクラスメソッドで利用頻度の高いメソッドについて説明します。

クラスメソッドの利用方法
    char a = 'あ';
    Character aObj = new Character( a );
    戻り型 変数 = Character.クラスメソッド( 引数 );
					
戻り値 メソッド 説明
boolean isDigit( char ) 引数のcharが数字かどうか判定します。
数字の場合には、trueを返し、異なる場合にはfalseを返します。
boolean isLetter( char ) 引数のcharが英文字かどうか判定します。
英文字の場合には、trueを返し、異なる場合にはfalseを返します。
boolean isLetterOrDigit( char ) 引数のcharが英文字又は数字かどうか判定します。
英文字又は数字の場合には、trueを返し、異なる場合にはfalseを返します。
char toLowerCase( char ) 引数のcharを小文字に変換します。
char toUpperCase( char ) 引数のcharを大文字に変換します。
boolean isWhitespace( char ) 引数のcharが空白文字が判定します。
引数のcharが空白文字の場合にはtrueを異なる場合にはfalseを返します。
クラスメソッドのサンプル
    Character aObj = new Character( 'A' );
    Character nObj = new Character( '3' );
    Character cObj = aObj;

    if( Character.isLetter( aObj.charValue() ) ){
        System.out.println("値は英文字です。");
    } else {
        System.out.println("値は英文字ではありません。");
    }
    if( Character.isDigit( nObj.charValue() ) ){
        System.out.println("値は数字です。");
    } else {
        System.out.println("値は数字ではありません。");
    }