Javaには、さまざまなデータ型が用意されており、データ型ごとに扱うデータの種類(数字・文字)や範囲などが異なります。
この記事では、そんな中でも「char型」について解説します!
char型の特徴や使い方がわかる内容になっているので、ぜひ参考にしてください。
目次
char型とは
char型は、1文字を扱うデータ型です。
日本語の「あ」や「い」といった1文字ですね。
ただし、Javaの文字コードはUnicodeなため、データは文字としてではなく文字コードを格納しています。
「あ」であれば「0x3042」といった風に、それぞれの文字に0~65535までの一意の番号が割り当てられているのです。
charの使い方
char型の使い方はとても簡単です。
次のように記述します。
char 変数名 = '任意の1文字';
charのデータ型を記述し、変数名を設定します。
そして、格納したい1文字を記述すればOKです。
例えば、次のように記述すれば「あ」を出力できます。
■記述例 public class Main{ public static void main(String[] args){ char c = 'あ'; System.out.println(c); } } ■実行結果 mbp:Desktop potepan$ java Main あ
また、任意の1文字の部分はUnicodeで記述しても、同じ結果を取得できます。
■記述例 public class Main{ public static void main(String[] args){ char c = 0x3042; System.out.println(c); } } ■実行結果 mbp:Desktop potepan$ java Main あ
このように、char型は任意の1文字を格納できるデータ型です。
char型とString型の違いは?
char型と同じように文字を扱うデータ型に「String型」があります。
よく使われる型なので、知っている人が多いのではないでしょうか。
ここでは、char型とString型の違いについて見ていきましょう。
char型とString型の大きな違いは、扱える文字の範囲(文字数)です。
String型は、複数の文字列を表すクラスです。
char型の変数が「基本データ型変数」と呼ばれるのに対し、String型は「クラス型変数」と呼ばれます。
次のように、char型・String型ともに、任意の1文字を格納可能です。
また、String型で文字列を表す際は「“”(ダブルクォーテーション)」を使います。
■記述例 public class Main{ public static void main(String[] args){ char c = 'あ'; String s = "あ"; System.out.println(c); System.out.println(s); } } ■実行結果 mbp:Desktop potepan$ java Main あ あ
どちらも同じく「あ」を出力できました。
String型は文字列として、文字を複数格納できます。
■記述例 public class Main{ public static void main(String[] args){ String s = "ポテパンスタイル"; System.out.println(s); } } ■実行結果 mbp:Desktop potepan$ java Main ポテパンスタイル
このように、文字列を出力できました。
char型で同じような処理を行うと、エラーが発生します。
■記述例 public class Main{ public static void main(String[] args){ char c = 'ポテパンスタイル'; System.out.println(c); } } ■実行結果 mbp:Desktop potepan$ javac Main.java Main.java:3: エラー: 文字リテラルが閉じられていません char c = 'ポテパンスタイル'; ^ Main.java:3: エラー: 文字リテラルが閉じられていません char c = 'ポテパンスタイル'; ^ Main.java:3: エラー: 文ではありません char c = 'ポテパンスタイル'; ^ エラー3個
なお、JavaのString型については、以下の記事で詳しく解説しています!
より詳しく知りたい場合は、ぜひ参考にしてみてくださいね。
【関連記事】
▶︎Javaの文字列操作を理解しよう!Stringクラスの基本的な使い方を解説!
char型とString型の変換について
char型で定義した変数を、String型に変換して使いたいです。できますか?
はい、可能です!char型とString型の変換について、ここでは見ていきましょう!
String型をchar型に変換
まずは、String型をchar型に変換する方法を紹介します。
変換するには、Stringクラスのメソッドの「toCharArray()」メソッドを使いましょう。
toCharArray()メソッドは、文字の文字列配列を変換するメソッドです。
次のように記述して使います。
■記述例 public class Main{ public static void main(String[] args){ String str = "ポテパンスタイル"; char[] c = str.toCharArray(); for (int i = 0; i < c.length; i++) { System.out.print(c[i]); } } }
char型の配列を使って、toCharArray()メソッドで変換した文字を1文字ずつ格納します。
- c[0] = ポ
- c[1] = テ
- c[2] = パ
と言った具合に、1文字ずつ入っているのです。
ここでは、この格納した文字列をfor文を使って1文字ずつ表示させています。
実行結果は次の通りです。
■実行結果 mbp:Desktop potepan$ java Main ポテパンスタイル
これで、String型をchar型に変換した上で表示できました。
String型をchar型に変換するには、toCharArray()メソッドを使う!
char型をString型に変換
char型をString型に変換するには、「ValueOf()」メソッドを使いましょう。
ValueOf()メソッドは、さまざまな型を、String型に変換できるメソッドです。
例えば、次のように記述できます。
■記述例 public class Main{ public static void main(String[] args){ char c = 'あ'; String s = String.valueOf(c); System.out.println(s); } } ■実行結果 mbp:Desktop potepan$ java Main あ
変換したいchar型の変数を、引数に指定するだけでOKです。
char型の配列をString型に変換する場合は、次のようにStringクラスのオブジェクトを生成しましょう。
■記述例 public class Main{ public static void main(String[] args){ char[] c = new char[] { 'ポ', 'テ', 'パ', 'ン' }; String s = new String(c); System.out.println(s); } } ■実行結果 mbp:Desktop potepan$ java Main ポテパン
このように、char型の文字をString型の文字列に変換できました!
char型をString型に変換するには、ValueOf()メソッドを使う!
char型の配列をString型に変換する場合は、Stringクラスのオブジェクトを生成する!
char型をint型に変換する
「char型をint型に変換できるの?」と思う人もいるでしょう。
char型はint型に変換可能です!逆も同じくできます。
char型からint型に変換するには、そのままint型の変数に代入すればOKです。
int型の方が扱えるデータの範囲が大きいため、そのまま代入しても問題ありません。
一方、int型からchar型に変換するには、int型の変数の前に「(char)」と記述してキャストします。
それぞれの記述例・実行結果を見ると、次のようになります。
■記述例 public class Main{ public static void main(String[] args){ char c1, c2; int i; c1 = 'あ'; // char型をint型に変換する i = c1; System.out.println(i); // int型をchar型に変換する c2 = (char)i; System.out.println(c2); } } ■実行結果 mbp:Desktop potepan$ java Main 12354 あ
「あ」という文字をint型に変換し、「12354」という整数値を出力できています。
また、int型からchar型に変換し、元の「あ」という文字も出力できていますね。
このように、キャストすることで相互に変換可能です!
char型をint型に変換するには、そのまま代入しよう!
int型をchar型に変換するには、(char)でキャストしよう!
char型をarrayで配列にする
ここまでの説明で何回か出てきていますが、char型は配列(Array)で使うことも可能です。
記述方法は次のようになります。
char 変数名[] = { '文字', '文字', '文字', … };
上記の記述で、char型配列の宣言と初期化を同時に行えます。
■記述例 public class Main{ public static void main(String[] args){ char[] c = {'ポ', 'テ', 'パ', 'ン'}; System.out.println(c[0]); System.out.println(c[3]); for (int i = 0; i < c.length; i++) { System.out.print(c[i]); } } } ■実行結果 mbp:Desktop potepan$ java Main ポ ン ポテパン
char型を比較する
char型は1文字を表すデータ型です。
そのため、文字の比較をする際は「==」で比較可能です。
例えば、次のように記述できます。
■記述例 public class Main{ public static void main(String[] args){ char c1 = 'あ'; char c2 = 'い'; if (c1 == 'あ') { System.out.println("Yes"); } else { System.out.println("No"); } if (c1 == 'い') { System.out.println("Yes"); } else { System.out.println("No"); } if (c1 == 12354) { System.out.println("Yes"); } else { System.out.println("No"); } if (c1 == c2) { System.out.println("Yes"); } else { System.out.println("No"); } } } ■実行結果 mbp:Desktop potepan$ java Main Yes No Yes No
それぞれ期待した結果が取得できていますね!
まとめ
Javaのchar型について、特徴や使い方を解説しました。
1文字を扱うデータ型で、String型やint型への変換もできます。
特に、データ型の変換は様々な場面で使うことになるので、ぜひこの記事を参考にやり方を覚えてくださいね!
・char型は、1文字を扱うデータ型のこと
・String型は、複数の文字列を表すクラス
・それぞれ、扱える文字数が異なります!