6日でできる 新Java入門|文字と文字列

1文字の違いを知ると、Javaの表現はもっと正確になる。文字と文字列を使い分けて、伝えたい情報を自在にあらわそう

Javaでプログラムを書いていると、数値だけでは表現しきれない場面がたくさん出てきます。人の名前、メッセージ、記号、評価、コマンドの一部など、画面に表示したい情報の多くは文字でできています。そこで大切になるのが、文字 と 文字列 の違いを正しく理解することです。ドラゴンボールの世界でたとえるなら、1つの気弾と、複数の気を連ねて放つ連続技は似ているようで役割が違います。Javaでも、1文字を表す char と、複数の文字の集まりを表す String は、見た目は近くても別のものとして扱われます。

初心者が最初に混乱しやすいのは、A と A の違いです。前者は1文字、後者は文字列です。たった引用符の違いだけに見えますが、Javaにとってはかなり大きな違いです。char は ちょうど1文字 を扱う型で、String は 0文字以上の文字の並び を扱います。この区別が分かるようになると、プログラムの意味がかなり読みやすくなります。

この記事では、文字リテラルと文字列リテラルの違い、char と String の宣言や代入、文字コードの考え方、文字列の連結まで、順番に丁寧に見ていきます。Lesson05_1.java では基本の表示、Lesson05_2.java では char の中身と文字コード、Lesson05_3.java では String の連結を扱います。これはJavaの世界でいう、1つの文字の気配を感じ取る修行と、複数の言葉をつなげて意味あるメッセージにする修行の入り口です。

文字と文字列の基本

Javaでは、1文字だけを扱う char と、複数の文字をまとめて扱う String を区別します。この違いはとても大切です。見た目が似ていても、役割も使い方も違います。

ドラゴンボール風にたとえるなら、char は単発の気弾、String は複数の気を連続して組み立てたメッセージ波のようなものです。単発か、まとまりかで使いどころが変わります。

文字リテラルと文字列リテラル

種類書き方
文字単一引用符で囲む'気', 'A', '1'
文字列二重引用符で囲む"Java", "修行開始", "123"

ここで大切なのは、char は必ず1文字だけだということです。たとえば '気' は正しいですが、'気功' のように2文字以上を入れることはできません。一方で String は 0文字以上を扱えるので、1文字でも複数文字でも大丈夫です。

char と String の違いをひと目で見る表

項目charString
扱う内容1文字だけ0文字以上の文字の並び
書き方'A'"A"
型の分類基本データ型参照型
主な用途記号、評価、1文字の判定名前、文章、メッセージ

この表を見ると、char と String は役割そのものが違うことが分かります。見た目の似た書き方に惑わされず、1文字なのか、文字の集まりなのかを意識するのがポイントです。

文字と文字列の変数宣言と代入

文字や文字列も、数値と同じように変数へ入れて扱えます。使うときは、どの型の箱を用意するかを決めてから、値を代入します。

宣言と代入の基本

宣言例代入例
charchar symbol;char symbol = '修';
StringString message;String message = "修行を始めます";

char の箱には1文字だけを入れ、String の箱には文章や単語のようなまとまりを入れます。この区別は、Javaのコードを読むうえでもかなり重要です。

文字と文字列を使って表示する例

まずは、char と String を実際に使って表示するシンプルな例を見てみます。

ファイル名:Lesson05_1.java

public class Lesson05_1 {
    public static void main(String[] args) {
        // 修行ランクと案内メッセージを表示する
        char rank = 'A';
        String message = "気の流れが安定してきました。次の修行へ進みましょう。";

        System.out.println("修行ランク:" + rank);
        System.out.println(message);
    }
}

実行結果

修行ランク:A
気の流れが安定してきました。次の修行へ進みましょう。

このプログラムでは、rank が char 型、message が String 型です。rank には A という1文字だけが入り、message には文章が入っています。

ここで押さえたいのは、Javaでは 1文字 と 文章 を別の型として扱うということです。プログラムの見た目は似ていても、箱の種類が違うので、使い分けが必要になります。

char の中身は文字コードで管理される

char は 文字 を扱う型ですが、Javaの内部では文字を数値で管理しています。この数値を 文字コード と呼びます。つまり、画面では文字に見えていても、コンピュータの中では番号として扱われています。

ドラゴンボール風にいえば、戦士の名前が画面には文字で表示されていても、内部ではそれぞれに識別番号が割り振られているようなものです。見た目は文字でも、中身は番号で管理されているわけです。

文字コードの考え方

用語説明
文字コード文字に割り振られた番号'A' → 65
ASCIIコード英数字などに使われる代表的な文字コード体系'B' → 66

char 型の値を int に変換して表示すると、その文字コードを見ることができます。また、逆に数値から文字を作ることもできます。

char と文字コードを確認する例

ファイル名:Lesson05_2.java

public class Lesson05_2 {
    public static void main(String[] args) {
        // 文字と文字コードの関係を確認する
        char mark1 = 'B';
        char mark2 = 67;   // 67 は C の文字コード

        System.out.println("mark1 のコード値:" + (int)mark1);
        System.out.println("mark2 の文字:" + mark2);

        char nextMark = (char)('A' + 2);
        System.out.println("nextMark の文字:" + nextMark);
    }
}

実行結果

mark1 のコード値:66
mark2 の文字:C
nextMark の文字:C

このプログラムでは、'B' を int に変換してコード値を確認しています。また、67 という数値を char に入れて C を表示しています。さらに、'A' + 2 を計算し、その結果を char に戻すことで C を作っています。

ここから分かるのは、char は見た目こそ文字ですが、内部では数値として扱える面があるということです。だからこそ char 同士の計算には、文字コードの考え方が関わってきます。

なぜ (char) や (int) を使うのか

書き方意味
(int)mark1文字を数値として見る
(char)('A' + 2)計算結果の数値を文字として見る

このような書き方は 型変換 と呼ばれます。今の段階では、文字と数値を行き来するときに必要な変換だと捉えておけば十分です。

String の + は連結になる

String でよく使うのが + による連結です。数値同士なら + は足し算ですが、String に対して使うと、文字列同士をつなげる意味になります。

ドラゴンボール風にたとえるなら、単発の気を足し合わせるのではなく、技名や案内文をなめらかにつなげて1つのメッセージにする感覚です。文字列の + は 計算 ではなく 接続 です。

文字列連結の基本

書き方意味
"気" + "弾"気弾 という1つの文字列になる
"第" + 3 + "修行"数値も文字列としてつながる
name + "さん"変数と文字列も連結できる

Javaでは、String と数値を + でつなぐと、数値も自動的に文字列へ変換されます。そのため、説明文の中に年齢や回数などを自然に埋め込めます。

文字列連結を使った例

ファイル名:Lesson05_3.java

public class Lesson05_3 {
    public static void main(String[] args) {
        // 戦士名と修行情報を連結して表示する
        String warriorName = "ハヤト";
        String trainingPlace = "重力修行室";
        int trainingCount = 3;

        String info = warriorName + "さんは " + trainingPlace + " で "
                + trainingCount + " 回目の修行を行います。";
        System.out.println(info);

        String result = info + " 集中して取り組みましょう。";
        System.out.println(result);
    }
}

実行結果

ハヤトさんは 重力修行室 で 3 回目の修行を行います。
ハヤトさんは 重力修行室 で 3 回目の修行を行います。 集中して取り組みましょう。

このプログラムでは、warriorName、trainingPlace、trainingCount を使って、1つの案内文を組み立てています。そのあと、さらに別の文章をつなげて、より長いメッセージにしています。

この例から分かるのは、String は単なる固定文ではなく、変数の内容を組み合わせて柔軟に文章を作れるということです。これができるようになると、画面表示がかなり実用的になります。

char と String の違いを整理する

ここまでの内容を、あらためて整理しておきます。char は 1文字、String は 複数文字を含めた文字の並び です。ここを混同しないことがとても大切です。

違いの整理表

項目char(文字)String(文字列)
基本データ型参照型
リテラル'A'"A"
文字数必ず1文字0文字以上
主な用途記号、評価、1文字データ名前、文章、案内文
+ の意味文字コード計算に関わる連結になる

この表を見ると、char と String は見た目よりもずっと性質が違うことが分かります。初心者のうちは、1文字なら char、文章や単語なら String と覚えておくと整理しやすいです。

文字と文字列の関係を図で整理

下図は、char が 1文字だけを扱う箱、String が 文字の並び全体を扱う箱 であることを示したものです。char の箱には A や 気 のような1文字だけが入り、String の箱には 修行開始 や ドラゴンボール のような複数文字が入ります。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、char は 1文字専用、String は文字列全体用 という違いが視覚的に整理できます。また、単一引用符と二重引用符の違いが、単なる見た目の違いではなく、型そのものの違いを表していることもつかみやすくなります。

文字コードと連結の違いを図で整理

char と String は、+ を使ったときの意味も違います。ここも図で整理すると理解しやすいです。char は内部で文字コードを持つため数値的な側面があり、String の + は文章をつなげる役割になります。

下図は、char の + が文字コードの計算につながることと、String の + が文字列の連結になることを対比して示したものです。左側では 'A' + 2 から C が得られる流れを示し、右側では 名前 と 案内文 をつないで1つの文章を作る流れを示します。1つの + 記号でも、char と String では意味が変わります。

↓クリックすると拡大表示されます。

この図から分かること

この図を見ると、同じ + でも char と String では意味が違うことが分かります。char は文字コードに関係する計算、String は文字のつながりを作る操作だと整理できるので、プログラムを書くときの混乱を減らせます。

文字と文字列を区別できると、Javaの表現がかなり広がる

Javaで人に伝わるプログラムを作るには、数値だけでなく、文字や文章をきちんと扱えることが大切です。評価記号を1文字で扱うのか、メッセージを文章として扱うのかで、使う型も書き方も変わります。この違いを理解しておくと、変数の意味が読みやすくなり、エラーも減らしやすくなります。

ドラゴンボールの修行でも、1発の気弾と、仲間に伝える長い作戦メッセージは同じようには扱いません。Javaでも同じで、1文字なら char、まとまった言葉なら String と使い分けることが大切です。ここをしっかり押さえておくと、この先の条件分岐や配列、メソッドの学習でも、文字情報を自信を持って扱えるようになります。