【Java初心者】引数の仕組みと使い方

メソッドを利用する上で欠かすことのできない引数の仕組みと使い方、
なぜ引数が必要なのか、使用した際のメリットについて説明していきます。

引数とは

引数とはメソッドを呼び出す際に、呼び出すメソッドに対して渡す値です
メソッドが複数存在し、メソッドからメソッドを呼び出す際に同時に引数を渡すことができます。

言い換えると、呼び出し元のメソッドから呼び出されたメソッドに渡される値です。
例えるなら、上司が部下に仕事の依頼をする際に、
「この情報をもとに会議の資料を作成して!」といったように依頼する仕事の情報を渡すイメージです。

引数とは

引数で渡す値の型には、数値/文字列/真偽値などどんな型でも指定することができます

引数として渡された値は、呼び出し先で受け取り、自由に使用することができます
しかし、無駄な処理が発生しないように、引数を渡すときは「呼び出し先のメソッドで
本当に必要な引数であるか
」を考えて渡すように心がけましょう。

引数が必要な訳

引数がメソッドからメソッドに渡される値であることはわかったと思いますが、
なぜわざわざ引数を使う必要があるのか?と疑問に思った方もいらっしゃると思います。
その原因は変数の使用できる範囲が限られていることと大きく関係しています。

	public static void main(String[] args) {
		int a = 0;
		methodA();
	}
	public static void methodA() {
	        int b = 1;
	  ❌  a = 1;
          ⭕️  b = 2;
	}

上記のようなコードでは、mainメソッド内で宣言した変数aは
methodA内では使用することができません。
もちろんmethodA内で宣言された変数bはmainメソッド内で使用できません。

変数使用時はメソッド内にて宣言を行いますが、
変数は宣言されたメソッド内でしか利用できないという問題があります。
つまり、メソッド内で宣言された変数は他のメソッド内で使用することができないため、
引数を利用して別のメソッドに値を渡すのです。

引数の渡し方と受け取り方

引数を渡す際は、メソッド呼び出しの際にメソッドの後ろの「()」内に引数を記載します。
一般的な用法としては変数に値を入れてその変数を渡します。

メソッド名(引数);

引数を受け取る際は、呼び出される側のメソッドの「()」内に
受け取る引数の型と引数名を記載します。
引数は、メソッド内で変数として使用することができます。
int型変数numberを渡す際は以下の通りとなります。

public static void メソッド名(int number) {
		//処理
		number = 1;
	}

重要な点として、「渡す引数の型と受け取る引数の型は必ず同じでなければならない
という点にご注意ください。
引数の型を間違えてしまうと値が正しく渡されないため、コンパイルエラーになってしまいます。

引数を1つ渡す

引数を1つ渡す場合には、引数のデータ型が同じであることを意識するように心がけましょう。

引数名の付け方は変数名の付け方と同じで何に使用するのかがわかる命名をします。
引数は名前が違っていてもデータ型が同じであれば正常に受け渡すことができます。
また、メソッドが違うため同じ変数名を使用することも可能です。

引数を1つ渡す

正しい引数名を意識することで呼び出し先メソッドで必要な引数の判別もでき、
より洗練されたソースコードを書くことにも繋がります。

複数の引数を渡す

引数は1つに限らず、いくつでも渡すことが可能です。
引数を複数渡す場合にも呼び出し元の変数名と呼び出し先の変数名を
同一にする必要はありません。
複数の引数を渡したり受け取ったりする場合には、カンマで区切って変数を並べます。

	public static void main(String[] args) {
		int a = 1;
		int b = 2;
		methodA(a, b);
	}
	public static void methodA(int a, int b) {
		int c = 0;
		c = a +b;
	}

複数の引数を渡す場合に注意すべき点は、データ型順番です。
データ型についてはもちろん同じデータ型で渡さなくてはいけません。
そして、引数の順番は必ず呼び出し元と呼び出し先で一致していなくてはいけません。
また、呼び出し先の引数で同名の変数名を指定することはできません

引数を複数渡す

上記の図について以下にて1つずつ説明をしていきます。

  1. 2つの引数はデータ型が同じですが、それぞれ順番通りa⇨a、b⇨bと代入されています。
  2. 呼び出し先でint aという引数名を2つ宣言しているため、コンパイルエラーです。
    int aという変数を同一メソッド内で2つ宣言していることと同じ意味になるため、エラーです。
  3. 2つのintの引数を渡していて名前が逆になってしまっていますが、
    引数を渡す場合は名前を見ているわけではなく、
    順番とデータ型を見て代入しているため、a⇨b,b⇨aという形で問題なく代入されています。
  4. 一見すると、a⇨a,b⇨bと代入してくれそうですが、
    Javaは順番とデータ型を見ているため、
    a⇨b,b⇨aという型の違う代入を行うことになってしまい、コンパイルエラーとなります。

まとめ

ここまで引数の利用法について説明してきました。
最後に、引数について簡単にまとめていきます。

  • 引数は、呼び出し元メソッドから呼び出し先メソッドに渡される値のこと。
  • いくつでも値を渡すことができる。
  • どんなデータ型の値でも渡すことができる。
  • 受け取る引数のデータ型は必ず一致していなければならない。

引数の使い方は理解できたでしょうか?
引数を使いこなしてメソッドをうまく利用してみてください!
メソッドの解説については、【Java初心者】メソッドの使い方と利点をご覧ください。

以上、参考になった方も参考にならなかった方もありがとうございました。