変数を使った自己紹介

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで分かること

  • () 内の 型 + 名前 で引数を宣言、メソッド内ではそのまま変数として使えます
  • + 連結で Stringint を混ぜると、int は自動的に文字列化されます
  • 最小例は return "私は " + age + " 歳の" + name + "です。";

変数を使った自己紹介 とは

メソッドの引数で受け取った名前と年齢を文字列連結し、自己紹介の文を組み立てる練習。本レッスンでは、変数を使った自己紹介 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

引数を使ってメッセージを組み立てる

前回は、固定の文字列を return で返すメソッドを書きました。"Hello, Java" のような決まり切ったメッセージを helloWorld から返しただけでしたが、現実のプログラムでは「呼び出すたびに違う値で挨拶する」ことが普通です。たとえば名前が "太郎" のときは "私は 25 歳の太郎です。" を返し、名前が "花子" のときは "私は 30 歳の花子です。" を返す、というようにです。

このレッスンのテーマは、メソッドに「外から値を渡す」ことです。固定値ではなく、引数で渡された nameage を組み合わせて自己紹介の文字列を作り、それを return で返します。

このレッスンで作るのは Solution.introduceMyself(String name, int age) というメソッドです。中身は "私は " + age + " 歳の" + name + "です。" という連結式 1 行で書けますが、ここには Java の重要な文法が 3 つも詰まっています。「引数」「型」「文字列連結」です。1 つずつ丁寧に確認していきましょう。

メソッドの引数とは

introduceMyself() の中に書く String name, int age引数 (ひきすう) です。引数とは、メソッドの外から値を受け取るための入り口だと考えてください。電子レンジに食べ物を入れるイメージで、メソッドという箱に外から nameage を入れてあげると、中で処理されて結果が出てきます。

引数は次のように書きます。

Java

public static String introduceMyself(String name, int age) { // ここで name と age を使える return "私は " + age + " 歳の" + name + "です。"; }

(String name, int age) の部分は「name という String 型の入り口と、age という int 型の入り口がありますよ」という宣言です。メソッドの中では nameage を変数のように扱えます。型と名前の組をカンマで区切って並べる、というのが Java の引数リストの書き方です。

引数は「外から渡される変数」と考えると分かりやすいです。name には呼び出し元から "太郎" のような値が入っていて、メソッドの中ではすでに値が入った状態でスタートします。自分で代入する必要はありません。

String 型と int 型の違い

Java は にうるさい言語です。String は文字列を入れる型、int は整数を入れる型です。String には "太郎""Hello" のようなダブルクオートで囲んだ値が入り、int には 25100 のような整数が入ります。文字を int に入れたり、数字を String に入れたまま計算したりはできません。

型を間違えると、コンパイル時にエラーが出ます。たとえば introduceMyself(25, "太郎") のように順番を入れ替えて呼ぶと、intString の位置が逆なので即座にエラーになります。引数は順番も大事です。

Java では「型 + 名前」の順で引数を書きます。String namename String と書くのは間違いです。最初に型、次に変数名、というルールを必ず守ってください。

文字列連結 + の仕組み

Java では + 演算子で文字列同士をつなげることができます。"こんにちは" + "太郎""こんにちは太郎" になります。さらに、文字列と数値を + で連結すると、Java は 数値を自動的に文字列に変換 してくれます。

たとえば "私は " + 25 という式は、25"25" に変換してから連結し、"私は 25" になります。これを使えば、int 型の age を直接 "私は " + age + " 歳" のように文字列に埋め込めます。

Java

public static String introduceMyself(String name, int age) { String prefix = "私は "; String middle = " 歳の"; String suffix = "です。"; return prefix + age + middle + name + suffix; }

この書き方は、上のシンプルな 1 行版とまったく同じ結果になります。変数に分けることで、何をつないでいるかが視覚的に分かりやすくなりますが、短いメソッドなら 1 行で書いてしまうのが普通です。

連結式が左から右へどう評価されていくかを図で表すと、下記のようなイメージです。

diagram (will load when visible)

各ステップでの中間結果を表にすると、次のとおりです。

ステップ結果
1"私は ""私は "
2"私は " + age"私は 25"
3"私は 25" + " 歳の""私は 25 歳の"
4... + name"私は 25 歳の太郎"
5... + "です。""私は 25 歳の太郎です。"

このように、+ は左の値と右の値を 1 つの新しい文字列にまとめる作業を順番に繰り返しています。途中で intage が文字列に変換されている点にも注目してください。

+ の左右に文字列が 1 つでもあれば、結果は文字列になります。25 + 3055 ですが、"" + 25 + 30"2530" です。連結と足し算が同じ記号なので、慣れないうちは混乱しやすいポイントです。

もう少し凝った書き方として String.formatprintf 形式の %s %d を使う方法もあります。たとえば String.format("私は %d 歳の%sです。", age, name) でも同じ結果が得られます。ただし入門段階では + 連結だけで十分なので、まずはこの形に慣れましょう。

よくある間違い

最初のうちに引っかかりやすいポイントは次のとおりです。

1 つ目は、引数の 型を逆 にしてしまうこと。(int name, String age) のように書くと、name に整数しか入らなくなり、文字列を渡したときにコンパイルエラーになります。必ず String name, int age の順で書きます。

2 つ目は、引数の 順番 を間違えること。テストでは introduceMyself("太郎", 25) のように呼ばれますが、メソッドの宣言を (int age, String name) にすると、"太郎"age に入ろうとして即エラーになります。呼び出し側と宣言側の順番をそろえます。

3 つ目は、半角スペースの入れ忘れ です。期待される戻り値は "私は 25 歳の太郎です。" で、25 の前後に半角スペースがあります。"私は" + age + "歳の" のようにスペースを入れ忘れると、"私は25歳の太郎です。" となってテストに落ちます。

4 つ目は、+, と書いてしまうこと。return "私は ", age, " 歳"; は Java の文法エラーです。連結は必ず + を使います。, はメソッドの引数を区切るためだけの記号です。

期待される文字列を、まずは紙やコメントに書き出してから組み立てると、スペース漏れに気づきやすくなります。私は ␣ 25 ␣ 歳の太郎です。 のように、半角スペースの位置を可視化するのがおすすめです。

この章のポイント

ここまでの要点 引数は () 内に 型 + 名前 で宣言、メソッド内で変数として使える。+Stringint を混ぜると int が自動文字列化される。スペースの位置はテストの厳密一致で重要。

やってみよう

まずは starter_code を開いて、return ""; の部分を書き換えます。手順は次のとおりです。

  1. return の右辺に "私は " + age + " 歳の" + name + "です。" と書く
  2. 25 の前後に半角スペースがあることを確認
  3. 「実行」ボタンを押して、太郎, 25"私は 25 歳の太郎です。" が返ることを確認
  4. 花子, 30Bob, 18 の他のテストも pass するか確認

うまくいかないときは、自分の戻り値とテストの expected を比べて、スペースが 1 つでも足りていない箇所が無いかを確認します。コンパイルエラーが出る場合は、+, と書いていないか、return を書き忘れていないかをチェックしてください。

慣れてきたら、戻り値の組み立てを変数に分ける書き方や、String.format を使った書き方にも挑戦してみると、Java の表現の幅が広がります。

よくある質問

Q. Java と他言語の文法はどう違いますか?

A. Java は静的型付けで、変数宣言時に型を明示します(int x = 0;)。中括弧でブロックを表し、文末にセミコロンが必要です。Python の動的型付けや JavaScript の柔軟さに慣れていると最初は窮屈ですが、コンパイル時にバグが発見できる安全性がメリットです。

Q. コードが動かないときに最初に見るべき場所は?

A. コンパイルエラーは行番号とエラー種別(cannot find symbol、incompatible types など)が表示されます。実行時例外はスタックトレースの最初の at ... が原因行です。IDE(IntelliJ / VS Code)の警告も丁寧に潰すと、半分のバグは未然に防げます。

Q. Java の習得後に学ぶべき技術は何ですか?

A. 基本構文を抑えたら java-intermediate(コレクション / ジェネリクス / Stream / 例外)に進み、Spring Boot や Web 開発に展開するのが王道です。クラウド時代は Kotlin / Scala への展開も視野に入りますが、まずは Java 標準を固めるのが効率的です。

次のレッスン

次は コメントを書く で、メソッドの引数で受け取った名前と年齢を文字列連結し、自己紹介の文を組み立てる練習 を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. 変数で自己紹介 の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. 変数で自己紹介 とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

要件

  1. Solution クラスに public static String introduceMyself(String name, int age) を実装する
  2. 引数 name と age を使い、"私は " + age + " 歳の" + name + "です。" の形式で文字列を組み立てて return する
  3. 半角スペースの位置 (age の前後) を間違えないこと

入出力例

test-cases.txt

introduceMyself("太郎", 25)"私は 25 歳の太郎です。" introduceMyself("花子", 30)"私は 30 歳の花子です。" introduceMyself("Bob", 18)"私は 18 歳のBobです。"

ヒント

main.java
main.java
学習モード

メモ

変数を使った自己紹介

⌘S で保存