【Java】メソッドの使用方法

2018年3月11日

本稿は、Javaでメソッド(関数)の使用方法を説明してきます。

メソッドとは、特定の機能を実行するための処理の塊です。

使い回しの効きそうな処理をメソッド化しておけば、後で同じ処理を使う場合に、

そのメソッドを呼び出すだけで、同じ処理を実行させることができます。

自分が使いやすいメソッドをたくさん作っておけば、それだけ作業効率が上がります。

メソッドで処理を使いまわせばソースコードの量が一気に短縮されます。

また、Javaには標準で用意されている膨大な量のメソッドを利用できるため、そのメソッド群を利用することで、難しい機能を簡単に利用することができます。

これまでの説明でも登場した、「System.out.println(表示データ)」や「文字列.equals(比較データ)」などのプログラムも、メソッドを利用しているだけなのです。

いつも利用しているプログラムが開始するブロックである「public static void main(String[] args){}」もメソッドなのです。

そんなメソッドを今回は使用できるようになりましょう。

メソッドを作って実行してみる

メソッドの作成はクラスブロック内に作成します。

アクセス修飾子 (static) 戻り値 メソッド名(引数){
}

の形で記述しましょう。

アクセス修飾子に関しては別の記事にて、説明しますので、ここでは何も指定しなくて大丈夫です。

static に関しても別記事で説明しますので、今は記述しておいてください。

戻り値はメソッドを実行した結果として返却したい値の型を指定しましょう。

例えば、戻り値をint型にしたいならint メソッド名と記述しましょう。

戻り値を指定した場合はそのメソッドで指定した型のデータを返却しなければなりません。

return (返却データ)と定義します。

何も返却したくない場合はvoidと指定しましょう。

メソッド名はJavaの予約語などでなければ自由に決めてしまってOKです。

引数はこのメソッドで使用したい変数をカンマ区切りで指定しましょう。

例えば、指定回数文字列を表示するメソッドを作りたい場合は、表示したい文字列と表示回数があれば使いまわしやすい機能になりそうですよね?

その場合は(String target, int viewNum)などと定義しておきましょう。

引数が不要であれば何も指定する必要はありません。

それでは指定回数文字列を表示するメソッドを作成してみたいと思います。

public class Test{
	public static void main(String[] args){
		view("勇者",1);
		view("賢者",2);
		view("モンスター",3);
	}
	
	static void view(String target, int viewNum){
		System.out.println("---メソッド実行開始---");
		for ( int i = 0;i < viewNum;i++ ) {
			System.out.println(target);
		}
		System.out.println("---メソッド実行終了---");
	}
}
実行結果

—メソッド実行開始—
勇者
—メソッド実行終了—
—メソッド実行開始—
賢者
賢者
—メソッド実行終了—
—メソッド実行開始—
モンスター
モンスター
モンスター
—メソッド実行終了—

viewメソッドを呼び出すとstatic void view(String target, int viewNum){の部分まで処理がジャンプします。

ジャンプしたらそのブロック内の処理を実行し、終了したら元のメインメソッドの処理に戻ります。

この流れでviewメソッドが三回呼び出され、それぞれ引数に与えられた値によって文字列を表示します。

実行結果を見てもらえばどう動いているか大体予想が付きますでしょうか?

メソッドのジャンプのイメージです。


それでは、次に戻り値のあるパターンを紹介します。

防御力と攻撃力を定義し、ダメージ量を計算するメソッドを作成します。
ただし、ダメージ量は最低1以上とします。

計算結果をキャラクターのHPから減算し、残りHPを表示します。

public class Test{
	public static void main(String[] args){
		int charaHp = 100;//体力
		int def = 20;//防御力
		int power = 40;//攻撃力
		int dmg = dmg(def,power);
		charaHp -= dmg;
		System.out.println(dmg+"ポイントのダメージ");
		System.out.println("残りHPは"+charaHp+"です。");
		def = 50;//防御力を50にアップさせてみる
		dmg = dmg(def,power);
		charaHp -= dmg;
		System.out.println(dmg+"ポイントのダメージ");
		System.out.println("残りHPは"+charaHp+"です。");
	}
	
	static int dmg(int def, int power){
		int result = power - def;
		if ( result < 1 ) {
			result = 1;
		}
		return result;
	}
}
実行結果

20ポイントのダメージ
残りHPは80です。
1ポイントのダメージ
残りHPは79です。

		int dmg = dmg(def,power);

static int dmgメソッドは戻り値がintで定義してあり、結果としてint型を返しますのでint変数に代入可能なのです。

あとはこの計算結果をHPから減算しているだけです。


メソッドからメソッドの呼び出しも可能です。

public class Test{
	public static void main(String[] args){
		print();
	}
	
	static void print(){
		print2();
	}
	static void print2(){
		System.out.println("テストだよ!!");
	}
}
実行結果

テストだよ!!

この場合も、呼び出したら呼び出し先で処理を実行し呼び出し元に処理が戻るという流れは変わりません。

メソッドはプログラマが楽をするために使える機能です。いろんなメソッドを作成し、プログラミングを楽にしていきましょう。

可変引数を持つメソッド

メソッドの引数には可変型の引数を持たせることができます。

可変引数を指定すると、利用側で複数のデータを指定できるようになります。2個でも、3個でも大丈夫なのです。

可変型の引数は型と引数の間に「…」を入れておけばよいです。

可変引数はメソッドの処理側では配列型として処理できるようになります。

可変引数は必ず引数の一番最後でなければ利用できません。

それでは、サンプルです。

public class Test{
	public static void main(String[] args){
		process("犬","猫");
	}
	
	static void process(String... names){
		for ( String n : names ) {
			System.out.println(n);
		}
	}
}
実行結果


余裕のある人だけ覚えておくと良いです。

Java

Posted by nompor