Javaのcharプリミティブ型は、1つのUnicode文字を16ビットで表現する型です。
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
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
charをStringに追加する+演算子を使うと、charをStringに追加できます。
'a' + " banana" // => "a banana"
"banana " + 'a' // => "banana a"
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