はじめに
Javaの学習で早い段階に出てくる引数は、メソッドへ値を渡して処理内容を変えるための仕組みです。固定値だけで書かれた処理は使い回しにくく、入力値ごとに別の処理を作る形になりがちです。そのため、int、String、Listなどを引数として受け取り、必要な値だけを外から渡す設計を理解すると、Javaのコードが読みやすくなります。
初心者がつまずきやすいのは、引数と戻り値、変数、型、メソッド呼び出しの関係が同時に出てくる点です。Javaではpublic、static、void、returnのようなキーワードも並ぶため、形だけを暗記すると応用で迷いやすくなります。この記事はJavaの引数の使い方を、サンプルコードと注意点を交えて徹底解説する構成です。
- Java 21
- OpenJDK 21 / JShell または javac で確認できる構文
- Javaで引数がメソッドに値を渡す仕組み
- 初心者が混同しやすい引数、戻り値、変数の違い
- 複数引数、変数引数、戻り値、オーバーロードの使い方
- 不正な引数を扱う注意点と例外処理
- Listやnullを使ったカスタマイズの考え方
Javaとは
Javaは、クラスとメソッドを中心にプログラムを組み立てるオブジェクト指向言語です。公式ドキュメントによれば、メソッドは名前、戻り値の型、仮引数リストなどで構成されます。詳しい定義はOracle Java TutorialsのMethodsで確認できます。
これにより、同じ処理を必要な値だけ変えて何度も利用できるのがポイントです。たとえば料金計算、文字列整形、入力チェックのような処理では、外から渡す値が変わるだけで処理の骨格は変わりません。その値を受け取る入口が引数です。
一般にJavaのコードはclassの中にmainメソッドや独自メソッドを書きます。System.out.printlnで出力し、Stringやintなどの型を使って値の種類を明確にします。型が明確なぶん、引数の順番やデータ型を間違えたときにコンパイル時点で気づける場面もあるのが基本です。
そのため、Javaの引数を学ぶときは構文だけでなく、どの値を外から渡し、どの値をメソッド内部で作るのかを分けて考える必要があるのが一般的です。Java List型完全ガイドのようなコレクション操作でも、この考え方はそのまま使えます。
引数とは
引数とは、メソッドを呼び出すときに渡す値です。メソッド定義側で受け取る変数を仮引数、呼び出し側で渡す具体的な値を実引数と呼び分けることがあります。この区別を押さえると、Javaのサンプルコードを読むときに値の流れを追いやすくなるのが現実的です。
たとえばdoubleValue(5)という呼び出しでは、5が実引数です。メソッド側でint numberと書かれていれば、numberが仮引数になります。このときnumberはメソッド内部だけで使えるローカル変数として扱われます。
基本的に引数は、処理を外部入力に応じて変化させる役割を持ちますし、ここを基本と考えるとよいでしょう。名前だけを変えて挨拶する、数量だけを変えて合計を出す、検索条件だけを変えて結果を絞り込むといった設計が可能になります。Javaで再利用しやすいメソッドを書くには、変わる部分を引数に切り出す発想が欠かせません。
基本的な引数の役割
具体的には、引数はメソッド名の後ろにある()の中へ書きます。public static int doubleValue(int number)なら、intが型、numberが受け取り名、int number全体が仮引数の宣言です。
このとき、呼び出し側はdoubleValue(5)のように型に合う値を渡すると整理できます。JavaはStringを求める場所へintを渡すような不一致を許さないため、型の対応関係を読む力が必要です。初心者はエラーメッセージの中に出るrequiredやfoundの型名を見ると原因を絞り込めます。
一方、引数に何でも詰め込めばよいわけではありません。メソッドの目的に関係する値だけを受け取り、内部で作れる値は内部で用意するほうが読みやすい設計になります。こうした分け方ができると、Javaの引数の使い方はかなり整理できると理解できます。
💡 Tips: 引数は「処理の外から渡す値」、戻り値は「処理の外へ返す値」と分けて覚えると、メソッドの入出力を読み取りやすくなります。
| 項目 | 例 | 役割 | 注意点 | 関連する使い方 |
|---|---|---|---|---|
int引数 | int number | 整数を受け取ります | 小数はそのまま渡せません | 計算処理 |
double引数 | double price | 小数を扱います | 丸め誤差に注意します | 料金計算 |
String引数 | String name | 文字列を受け取ります | null対策が必要です | 表示文生成 |
boolean引数 | boolean enabled | 真偽を切り替えます | 意味が曖昧になりやすいです | 条件分岐 |
List引数 | List<String> items | 複数要素を渡します | 空リストも考慮します | 一覧処理 |
String[]引数 | String[] args | 配列を受け取ります | 要素数を確認します | main引数 |
| 複数引数 | (String name, int age) | 複数の値を渡します | 順番を間違えやすいです | プロフィール出力 |
| 戻り値 | return x * 2 | 処理結果を返します | 型を合わせます | 計算メソッド |
void | public void run() | 値を返しません | 出力だけで終わりがちです | 表示処理 |
static | static int add | インスタンスなしで呼べます | 状態を持つ処理に不向きです | 学習用例 |
| オーバーロード | add(int,int) | 同名で型違いを作ります | 曖昧な呼び出しに注意します | 型別処理 |
null | name == null | 値なしを表します | NullPointerExceptionに注意します | 初期値補完 |
| 例外 | IllegalArgumentException | 不正値を知らせます | メッセージを具体化します | 入力検証 |
try | try { ... } | 例外発生箇所を囲みます | 範囲を広げすぎません | エラー処理 |
catch | catch (Exception e) | 例外を受けます | 握りつぶしを避けます | 復旧処理 |
for | for (String item : items) | 要素を反復します | 変更処理に注意します | リスト表示 |
if | if (number <= 0) | 条件で分岐します | 境界値を確認します | 検証処理 |
return | return number | 値を返して終了します | 戻り値型に合わせます | 関数化 |
new | new SampleClass() | インスタンスを作ります | 不要な生成を避けます | クラス利用 |
List.of | List.of("A") | 固定リストを作ります | 生成後の追加はできません | サンプルコード |
System.out.println | println(result) | 標準出力へ出します | 本番ログとは分けます | 動作確認 |
| 仮引数 | String name | 受け取り側の名前です | 役割が分かる名前にします | メソッド定義 |
| 実引数 | "山田" | 渡す具体値です | 型と順序を合わせます | メソッド呼び出し |
| 引数なし | run() | 外部値を受けません | 固定処理になります | 初期化 |
| 可変長引数 | String... names | 個数可変で受けます | 配列として扱われます | 補助メソッド |
| 参照型 | List<String> | オブジェクト参照を渡します | 中身の変更に注意します | 共有データ |
| プリミティブ型 | int | 値そのものを扱います | 再代入は呼び出し元へ戻りません | 数値処理 |
| 命名 | age | 意味を伝えます | aだけでは読みにくいです | 保守性 |
| 境界値 | 0 | 条件の境目を表します | 含むか除くか決めます | 注意点 |
| ドキュメント | Javadoc | 契約を残します | 例外条件も書きます | API設計 |
Javaの引数の詳細な使い方
Javaの引数の使い方は、単一の値を渡す形から始めると理解しやすくなります。値を受け取るメソッド、呼び出す側のコード、期待される出力を分けて読むと、どこで値が変化しているかを追跡できます。サンプルコードを使うと、初心者でも構文と動きの対応を確認しやすくなるのが目安です。
サンプルコード1:基本的な引数の使い方
具体的には、整数を受け取って2倍にするメソッドで確認すると覚えるとよいでしょう。doubleValueはint numberを受け取り、number * 2をreturnします。Javaのメソッド定義では、戻り値の型をintとして明示する点も見ておきたい箇所です。
結果: 期待される処理は、受け取った整数を2倍にした値を呼び出し元へ返す動きです。
このメソッドだけでは画面表示は行われません。値を確認するには、mainメソッドから呼び出して戻り値を変数へ入れます。その変数をSystem.out.printlnで出力すると、戻り値の流れを見やすくなると考えられます。
結果: 期待される出力は「結果は 10 です」です。
これにより、5が実引数として渡され、numberに入ってから計算される流れが分かります。Javaの徹底解説では、この「呼び出し側の値」と「受け取り側の変数」を分けて読むことが基礎になります。
サンプルコード2:複数の引数を使う方法
複数の引数を使う場合は、,で区切って並べますし、ここがポイントです。Javaでは引数ごとに型と名前を書くため、String nameとint ageのように異なる型を同時に受け取れます。ただし、呼び出し側も同じ順番で渡す必要があるのがポイントです。
結果: 期待される読み取り方は、括弧内に並んだ値が左から順にメソッドへ渡される形です。
その構造を使って、名前と年齢を受け取るメソッドを書けます。greetPersonはStringとintを受け取り、文章を組み立てて出力すると言えるでしょう。文字列連結には+演算子を使っているのが一般的です。
結果: 期待される処理は、名前と年齢を受け取り、挨拶文として標準出力へ送る動きです。
このクラスのメソッドを呼び出すには、インスタンスを作ってからsample.greetPersonを実行します。new SampleClass()で生成した参照を変数へ入れ、そこからメソッドを呼び出す形です。Javaのオブジェクト指向に慣れるうえでも、この書き方はよく出てきます。
結果: 期待される動きは、nameへ「山田」、ageへ25が渡されることです。
結果: 期待される出力例は「こんにちは、山田さん。あなたは25歳ですね。」です。
ただし、"山田"と25の順番を逆にすると、定義された型と合わずコンパイルエラーになります。複数引数は表現力を高めますが、引数の順番という注意点も増えると整理できます。
サンプルコード3:変数を引数として使う方法
リテラルだけでなく、変数も引数として渡せますが、これは押さえたい点です。値を変数へ入れてからメソッドへ渡すと、入力値を別の場所で作ったり、条件によって変えたりできます。これはJavaの使い方としてかなり頻繁に出てきますし、ここがポイントです。
結果: 期待される処理は、受け取ったnameを使って挨拶文を出力する動きです。
このgreetメソッドは、String型の値を受け取るだけの小さな処理です。小さいメソッドほど引数の役割が見えやすく、初心者の学習にも向きます。サンプルコードでは、固定文字列と引数の値を連結しているのが基本です。
結果: 期待される出力は「Hello, World」です。
同様に、呼び出しを変えるだけで別の名前を扱えます。メソッド本体を書き直さず、実引数だけを変えるのがポイントです。この考え方が、Javaで関数化や部品化を行うときの土台になります。
結果: 期待される動きは、同じgreetメソッドが異なる文字列を受け取ることです。
結果: 期待される出力例は「Hello, Alice」と「Hello, Bob」です。
これらの例から、変数を引数として渡す設計では、呼び出し側が値を決め、メソッド側が処理を担当する関係になります。処理の責務が分かれるため、Javaのコードを読み返したときにも変更箇所を見つけやすくなります。
サンプルコード4:戻り値として引数を使う方法
引数を受け取ったメソッドは、計算した値を戻り値として返せますし、これが一つの目安です。出力だけで終わるvoidとは異なり、intやStringを返すメソッドは、呼び出し元で結果を再利用できます。この違いはJavaの引数と戻り値を学ぶうえで特に押さえたい点です。
結果: 期待される出力は「結果は10です。」です。
このときmultiplyByTwoはint xを受け取り、x * 2を返します。main側では戻り値をresultへ代入し、その後に表示しています。処理結果を後続処理へ渡せるため、計算メソッドでは戻り値を使う形が自然です。
一方、メソッド内でSystem.out.printlnまで行うと、結果を別の計算へ使い回しにくくなるのが目安です。学習用のサンプルコードでは出力を含めても分かりやすいものの、設計としては値を返すメソッドと表示するメソッドを分ける選択もあります。
サンプルコード5:メソッドオーバーロードと引数
Javaでは、同じ名前のメソッドでも引数の型や個数が異なれば定義できます。これをメソッドオーバーロードと呼びますが、覚えておくと役立つでしょう。Javaのオーバーライド解説と名前が似ていますが、オーバーロードは同じクラス内の同名メソッド、オーバーライドは継承関係での再定義という違いがあるのが現実的です。
結果: 期待される動きは、呼び出し時の引数の型に応じて対応するaddメソッドが選ばれることです。
これらのaddは名前が同じですが、int、double、Stringという引数の型が異なります。Javaコンパイラは呼び出し側の実引数を見て、どのメソッドを使うか判断します。型の違いを使った読みやすいAPI設計に向いた仕組みです。
結果: 期待される処理は、整数、小数、文字列の各引数に合うaddが呼び分けられることです。
結果: 期待される出力例は、整数の加算結果、小数の加算結果、文字列の結合結果が順に表示される形です。
ただし、似た型を増やしすぎると、どのメソッドが呼ばれるのか読み手が迷う場合があります。APIとして公開するメソッドでは、引数の型と名前から役割が自然に伝わるかを確認するとよいでしょう。詳しい仕様はJava Language SpecificationのOverloadingも参考になります。
引数の詳細な対処法
引数は外から渡される値なので、期待どおりとは限りません。年齢に負の数が入る、名前にnullが入る、リストが空になるなど、メソッド側で扱える範囲を超える値が来る場合があるのがポイントです。そのため、Javaの引数設計では正常系だけでなく異常系の対処法も考えます。
特に押さえたいのは、メソッドの入口で値を検証する考え方です。入口で不正な値を止めると、後続処理で原因の分かりにくいエラーが起きにくくなります。入力値の制約をコードで表すことは、引数の使い方に含まれる実践的な注意点です。
サンプルコード6:不正な引数を検出する方法
具体的には、正の数だけを受け付けるメソッドを考えますし、ここを基本と考えるとよいでしょう。number <= 0の場合にIllegalArgumentExceptionを投げると、呼び出し側へ「使い方が条件を満たしていない」と伝えられます。Javaではこの例外が、不正な引数を表す標準的な選択肢としてよく使われますが、これは押さえたい点です。
結果: 期待される出力は「エラーメッセージ: 引数は正の数である必要があります。」です。
この例では、getPositiveNumberに-5が渡されますし、ここがポイントです。条件式number <= 0が真になるため、throwで例外が発生し、catchブロックでメッセージを出力します。正常値ならreturn numberまで進みますし、これが一つの目安です。
ただし、例外を使うか、booleanで検証結果を返すかは文脈によって変わります。メソッドの契約違反に近い値なら例外、画面入力のように日常的に起こる不正値なら検証結果を返す設計もあるのが一般的です。Javaの徹底解説としては、例外の種類だけでなく、どこで検証するかまで合わせて考える必要があると整理できます。
catchで例外を受け取ったあと何も処理しない書き方は、原因調査を難しくします。少なくともメッセージ、入力値、呼び出し元の意図が追える形にするのが現実的です。引数の詳細な注意点
Javaの引数には、順番、型、null、可変性、命名という複数の注意点があります。構文が正しくても、意味の順番が逆であれば期待と違う文章や計算結果になります。初心者はコンパイルエラーだけでなく、コンパイルは通るが意味が違うケースにも目を向けると理解が深まりますが、覚えておくと役立つでしょう。
一方、すべての注意点を一度に覚える必要はありません。最初は「型が合っているか」「順番が合っているか」「値なしを許すか」を確認すると、よくあるミスをかなり減らせますが、これは押さえたい点です。Javaのエスケープ処理のように文字列を扱う処理でも、引数の中身を正しく見る姿勢が役立ちます。
サンプルコード7:引数の順番と注意点
引数の順番は、同じ型が並ぶと特に間違えやすくなります。String greetingとString nameはどちらもStringなので、逆に渡してもコンパイルエラーになりません。その代わり、出力される意味が変わりますし、これが一つの目安です。
結果: 期待される出力は「こんにちは、山田さん」と「山田さん、こんにちは」です。
このように、同じString型の引数が並ぶメソッドでは、型チェックだけでは意味の誤りを防げません。名前をgreeting、nameのように具体化し、呼び出し側でも値の順番を確認します。引数が増えて読みにくくなった場合は、専用クラスやレコードでまとめる設計も検討できます。
サンプルコード8:引数のデータ型とその振る舞い
データ型は、引数がどの種類の値を受け取るかを決めますが、覚えておくと役立つでしょう。intなら整数、Stringなら文字列、List<String>なら文字列の並びというように、型から処理の意図を読み取れます。Javaの型システムに慣れるほど、メソッドの使い方も追いやすくなると理解できます。
結果: 期待される出力は「名前: 山田、年齢: 30歳」です。
このコードでは、displayInfoがint ageとString nameを受け取ります。呼び出し側のdisplayInfo(30, "山田")は、型と順番が定義に合っています。逆にdisplayInfo("山田", 30)のように渡すと、型の並びが合わずコンパイルエラーになると覚えるとよいでしょう。
ただし、型が合っていても値の範囲が妥当とは限りません。ageに-1を渡せてしまうため、年齢として扱うなら入力検証が必要です。型は値の種類を守り、検証は値の妥当性を守ると分けて考えると整理できると整理できます。
Listインターフェイスの仕様はOracle Java SE 21 APIのListで確認できます。リストを引数に渡す場合は、要素型と変更可能性を合わせて確認します。引数の詳細なカスタマイズ
引数のカスタマイズでは、受け取った値を補正したり、複数の値をまとめて扱ったりすると理解できます。Javaにはデフォルト引数の構文がないため、nullを受けたときに代替値を入れる、オーバーロードで引数の少ないメソッドを用意する、といった方法が使われます。
そのため、引数をカスタマイズするときは、呼び出し側にどこまで自由を許すかを決めます。自由度が高いAPIは柔軟ですが、値の組み合わせが増えるぶん注意点も増えますし、ここを基本と考えるとよいでしょう。Javaの使い方としては、想定する入力範囲を明確にし、サンプルコードでも境界条件を示すと理解しやすくなると考えられます。
サンプルコード9:カスタマイズした引数の振る舞い
この例では、nameとcityがnullの場合に代替文字列を設定します。Javaには関数呼び出し時のデフォルト引数がないため、メソッド内部で補完する書き方です。ただし、nullを許す設計なのか、呼び出し側の誤りとして拒否する設計なのかは先に決めますし、ここがポイントです。
結果: 期待される出力は「名前:山田, 年齢:25, 城市:東京」と「名前:ゲスト, 年齢:30, 城市:未設定」です。
このサンプルコードでは、name == nullとcity == nullを個別に確認しています。値がない場合だけ代替値を入れるため、呼び出し側が通常の値を渡した場合はそのまま使われます。一方、ageにはnullを渡せないintを使っているため、未設定を表したい場合は別の設計が必要になると言えるでしょう。
ちなみに、表示文の「城市」は日本語の画面文言としては「都市」や「市区町村」のほうが自然な場合があると覚えるとよいでしょう。元のサンプルコードの動作を保つため文字列はそのままにしていますが、実際の画面表示では用語の一貫性も確認します。
サンプルコード10:APIやライブラリを利用した引数の活用例
Java標準APIの型を引数にすると、複数の値をまとめて渡せます。List<String>は文字列の並びを表すため、同じ処理を要素数に関係なく書きやすくなると考えられます。Javaアノテーションの解説のようなAPI理解でも、型と引数の関係は読み取りの軸になるのが基本です。
結果: 期待される出力は「アイテム:アイテム1」「アイテム:アイテム2」「アイテム:アイテム3」が順に表示される形です。
このコードでは、List.ofで作ったリストをdisplayListへ渡しています。拡張for文のfor(String item : items)は、リスト内の要素を順番に取り出します。リストを引数にすることで、要素が増えてもメソッド定義を変えずに処理できるのが目安です。
ただし、List.ofで作ったリストは変更不可です。メソッド内でitems.addのように追加しようとすると例外につながりますが、これは押さえたい点です。リストを受け取るメソッドでは、読み取り専用なのか、変更してよいのかをメソッド名やドキュメントで伝えると扱いやすくなります。
💡 Tips: 引数が増えすぎる場合は、関連する値をクラスやrecordにまとめる方法があります。呼び出し側の読みやすさと、メソッドの責務を合わせて判断すると言えるでしょう。
まとめ
Javaの引数は、メソッドに外部から値を渡し、処理内容を変えるための仕組みです。単一のintから始まり、String、複数引数、戻り値、オーバーロード、Listまで広げると、メソッド設計の幅が見えてきます。初心者は、仮引数と実引数、型と順番、戻り値の受け取り方を分けて読むと理解しやすくなります。
そのうえで、不正な引数への対処法やnullの扱いを押さえると、サンプルコードだけでなく実用的なJavaコードにもつながりますし、これが一つの目安です。徹底解説として特に大切なのは、構文を暗記するだけでなく、どの値を外から渡し、どの値を内部で作り、どの結果を返すのかを整理することです。Javaのうるう年判定のような条件分岐の題材でも、引数の設計は処理の読みやすさに直結します。
こうした基礎を押さえると、Javaの引数の使い方は、計算、文字列生成、入力検証、リスト処理へ自然に広がります。注意点を確認しながら小さなメソッドを書き、サンプルコードの値を少し変えて読むことで、引数がプログラム全体の流れをどう変えるかを具体的に理解できるのが基本です。
関連記事
- Java List型完全ガイド!初心者でもマスターできる7つのステップ
- Javaアノテーションの12選!初心者から上級者まで徹底ガイド
- Javaでうるう年を判定!初心者でも分かる9ステップ解説
- Javaエスケープ処理の10ステップマスターガイド
- Javaでマスターする!オーバーライドのたった7つのステップ
※本記事は実在のエンジニア複数名で構成される Japanシーモア編集部が、AI支援を活用して作成・校正・公開しています。


