文字

文字 の Java

16個の演習

文字について

Javaのcharプリミティブ型は、1つのUnicode文字を16ビットで表現する型です。

Note

char型は、文字を16ビットで表現していた最初のUnicode仕様に基づいています。 これは一般的な文字のほとんどをカバーするのに十分で、0x0000から0xFFFFまでの範囲の文字を扱えます。 その後、この仕様は表現できる文字の範囲を0x01FFFFまで広げました。

複数のcharを組み合わせて"word"のような文字列を作ることもできますし、それぞれのcharを独立して処理することもできます。 charリテラルはシングルクォートで囲みます(例:'A')。

char lowerA = 'a';
char upperB = 'B';

Stringのcharを取得する

String.toCharArrayメソッドは、文字列の文字を配列として返します。 配列で説明したように、forループを使って配列を反復処理できます。

String text = "Hello";
char[] asArray = text.toCharArray();

for (char ch: asArray) {
    System.out.println(ch);
}

// Outputs:
// H
// e
// l
// l
// o

Characterクラス

charを調べたり操作したりするための組み込みライブラリのメソッドがたくさんあります。 それらはjava.lang.Characterクラスの静的メソッドとして用意されています。 いくつか例を見てみましょう:

Character.isWhitespace(' ');    // true
Character.isWhitespace('#');    // false

Character.isLetter('a');        // true
Character.isLetter('3');        // false

Character.isDigit('6');         // true
Character.isDigit('?');         // false
Note

Characterクラスの一部のメソッドにはオーバーロードがあり、charまたはintのどちらでも受け取れます。 たとえば、isDigitにはcharを受け取るものと、intを受け取るものがあります。 先ほど説明したように、char型は0x0000から0xFFFFまでの範囲の文字しか表現できません。 一方、intはすべての文字を表現できるため、intのオーバーロードが存在します。

charをStringに追加する

+演算子を使うと、charをStringに追加できます。

'a' + " banana"     // => "a banana"
"banana " + 'a'     // => "banana a"
Caution

2つのcharを+でつなげてStringを作ろうとしないよう、_注意_してください! この方法で2つのcharを足すと、Stringではなくintになります! たとえば:

'b' + 'c';
// => 197 (not the String "bc")

これは、Javaがcharをintに昇格させるためです(Java言語仕様の4.2 プリミティブ型と値を参照)。

ただし、追加する文字が多い場合は、代わりにStringBuilderを使うほうが効率的です:

StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');

String builtString = builder.toString();
// => abc
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

文字を学習する