🟢 はじめに
Javaを学んでいて、「引数(ひきすう)」や「戻り値(もどりち)」という言葉のイメージが湧かず、つまずいた経験はありませんか?🤔
メソッドの「引数」と「戻り値」
この2つがわかると、ただコードを書くだけだったのが、まるでプログラムと「会話」しているような感覚に変わります✨
難しく聞こえるかもしれませんが、実はとてもシンプルです。
この関係は、RPGの勇者への「お願い(インプット)」と、勇者からの「報告(アウトプット)」のキャッチボールだと考えると、理解しやすくなると思います⚾️
さっそく、勇者と一緒に紐解いていきましょう!
🟨 引数(ひきすう)= 勇者への「材料・指示」
引数とは、メソッド(勇者の行動)を呼び出すときに、カッコ () の中に入れるデータのことです。
例えるなら、勇者に「これを材料として使ってね!」「この相手を狙ってね!」と手渡す荷物や指示書のようなものです📜
🛒 例:買い物メソッド
勇者に「薬草を買ってきて!」とお願いする場合、タダでは買えませんよね。
「お金」を渡す必要があります。
// ↓ これが引数(勇者に渡すお金=材料)
void buyItem(int money) {
System.out.println(money + "ゴールドを使って、薬草を買いました!🌿");
}
-
呼ぶとき:
h1.buyItem(50);(50ゴールドを引数として渡す) -
イメージ: あなた ➔ [50ゴールド] ➔ 勇者
🎁 戻り値(もどりち)= 勇者からの「お返し・報告」
戻り値とは、メソッドの処理が終わったあと、呼び出し元(お願いしたあなた)に返ってくるデータのことです。
例えるなら、勇者からの「結果報告」や「手に入れたお宝」ですね💰
戻り値がある場合は、メソッド名の前に「何を返すか(データの型)」を書き、最後に return を使って結果を返します。
📊 例:ダメージ計算メソッド
勇者に「今の攻撃でどれくらいダメージを与えたか教えて!」と聞く場合です。
// ↓ int型の数字(ダメージ量)を返すよ!という宣言
int calculateDamage() {
int damage = 15;
return damage; // ← これが「お返し(報告)」の実行!
}
- 呼ぶとき:
int result = h1.calculateDamage(); - イメージ: 勇者 ➔ [15ダメージという数字] ➔ あなたの用意した箱(変数 result)へ
🔄 究極のキャッチボール:引数 + 戻り値
それでは、「材料を渡して、結果をもらう」というフルセットのやり取りを見てみましょう!
「魔物の名前を教えるから、そいつを倒して経験値を報告して!」という依頼です⚔️
class Hero {
// String型の材料(enemy)をもらって、int型の結果(exp)を返す
int battle(String enemy) {
System.out.println(enemy + " と戦った! ⚔️");
int exp = 100; // 経験値100ゲット
return exp; // 経験値をあなたに返す
}
}
// 実行シーン
public static void main(String[] args) {
Hero h1 = new Hero("アルス");
// 「スライム」を投げて、返ってきた「100」を totalExp に入れる
int totalExp = h1.battle("スライム");
System.out.println("合計経験値は " + totalExp + " になった!✨");
}
この流れを分解すると、
ちゃんとキャッチボールになっていることが分かると思います⚾️
-
投げる(引数): あなたが
battle("スライム")という形でバトル相手を指定して投げる。 -
実行(メソッド内): 勇者がメソッドの中で戦う。
-
打ち返す(戻り値): 勇者が
return exp;で経験値を投げ返す。 -
受け取る: あなたが
int totalExp = ...でその数字をしっかりキャッチする!
📝 まとめ:じゃあ「ボイド(void)」って何だったの?
メソッドの最初によく付いている void。
実はこれ、「お返し(戻り値)なし!」という意味です。
-
intやStringが書いてある場合:「終わったら、この型のデータを報告します!」というお約束。 -
voidが書いてある場合::「報告(お返し)は不要です!」という合図。
「ただ攻撃して終わり(画面に表示するだけ)」なら void でOKですが、
「攻撃した結果、相手を倒せたかどうか(true/false)」を知りたいなら戻り値が必要になる、というふうに使い分けるのがポイントです!🌟
同じように「引数・戻り値って何?」と悩んでいる方の参考になれば幸いです 🙌