8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Java入門:第8回 メソッドの作成

Last updated at Posted at 2014-11-07

#メソッドの作成

##メソッドの定義

Javaのプログラムはmainの中を上から順番に実行していきます。mainの中にすべての命令を記述していくと、命令が長くなったり、同じようなコードが出てきたり、非効率です。そこでよく使う命令を一つにまとめる構文があります。複数の命令をまとめた元をメソッドと言います。

例えば、足し算の結果を出力するプログラムを考えてみます。次のような命令があったとします。

System.out.println("足し算の結果は");
System.out.println(2+3);
System.out.println("です。");

ここでは3つの出力命令を利用しています。この3つの命令をまとめるには{}(中括弧)を利用します。{から}までをブロックと呼び、命令の範囲を指定することができます。mainメソッドの外側に命令を移動し、ブロックで囲んでみましょう。

{
    System.out.println("足し算の結果は");
    System.out.println(2+3);
    System.out.println("です。");
}

しかし、このままだとこの3つの命令をどのように呼び出せばよいか分かりません。そこでこの3つの命令をまとめたものに名前を付けます。足し算をしているのでaddと名前を付けましょう。

add {
    System.out.println("足し算の結果は");
    System.out.println(2+3);
    System.out.println("です。");
}

これがメソッドの原型になります。ただし、このままではコンパイルが通りません。よく考えるとこのaddメソッドは2+3の結果しか表示できません。例えば電卓で2+3の結果しか表示しないものがあった場合、これは使い物になりません。そこでこのメソッドを使う利用者がどのような足し算を行うか決めることができるようにしてみましょう。メソッド実行時に利用者が与える情報を引数(ひきすう)といい、次のように定義します。

add(int a, int b) {
    System.out.println("足し算の結果は");
    System.out.println(a+b);
    System.out.println("です。");
}

引数はint aのように、「型 変数名」の形式で定義します。この時aのような変数名を仮引数と呼びます。また,(カンマ)で区切ることで複数の引数を定義することができます。メソッドを定義する場合、コンパイルエラーにならないためにはもう少し情報がひつようですが、一旦、完成させてしまいましょう。

static void add(int a, int b) {
    System.out.println("足し算の結果は");
    System.out.println(a+b);
    System.out.println("です。");
}

staticの意味は別の回で解説します。voidについては後に解説します。
よくある間違いでmainメソッドの中に、メソッドを定義してしまうことがあります。今回作成したaddメソッドとmainメソッドは同列ですのでmaimメソッドの中には記述しないようにしましょう。

//【間違い】
public class HelloWorld {
    static public  void main(String [] args) {
        static void add(int a, int b) {
           System.out.println("足し算の結果は");
           System.out.println(a+b);
           System.out.println("です。");
        }
    }
}
//【正しい】
public class HelloWorld {
    static public  void main(String [] args) {
    }
    static void add(int a, int b) {
        System.out.println("足し算の結果は");
        System.out.println(a+b);
        System.out.println("です。");
    }
}

##メソッドの利用

作成した、メソッドを利用するにはmainメソッド内で次のように記述します。

    static public  void main(String [] args) {
       add(1,2);
    }

メソッドは何回でも呼び出すことができます。

    static public  void main(String [] args) {
        add(1,2);
        add(3,5);
        add(10,20);
   }
```

add(1,2)と記述した時に1,2がそれぞれ仮引数のa,bに代入されて処理が実行されます

![Image.png](https://qiita-image-store.s3.amazonaws.com/0/22658/8530638e-176f-bf29-d7f3-5ecc4d121306.png)

このときの1や2を実引数といいますさてこのaddメソッドは足した結果を出力するだけのプログラムになりますmainメソッド内で足した結果を元にさらに演算など処理を行いたい場合はaddメソッドから足した結果をmainメソッドに戻す必要がありますこのようにメソッドを利用したところに処理の結果を戻す仕組みを戻り値といいます戻り値を示すにはreturnというキーワードを利用します次のようにaddメソッドを書き換えてみます

```java
    static void add(int a, int b) {
        return a+b;
    }
```

するとエラーになりますエラーメッセージはVoid methods cannot return a valueというものです戻り値を利用する場合は戻り値の型を示さなければなりません今は足した結果はint型の整数ですからint型の値が返却されることを示す必要があります戻り値の型をint型と示すには次のように記述します

```java
    static int add(int a, int b) {
       return a+b;
    }
```

以前voidと記述していたところがintに変わっていますメソッド名の前にどの型の値が返却されるかを記述するのですvoidは特別な型で戻り値が無い場合に利用します戻り値を指定するとaddメソッドを利用しているmainメソッド内で結果を受けることができるようになりますそのためには変数の代入と同じように左辺と右辺の型を合わせます

```java
    static public  void main(String [] args) {
        int result = add(3,5);
        System.out.println("足し算の結果=" + result);
    }
```

###応用:可変長引数

引数には可変長引数と呼ばれる仕組みがありますaddメソッドでは2つの値の足し算を行いましたが複数の値の足し算を行いたいときなど引数の数が決まらない場合可変長引数を利用します可変長引数は他の引数とともに利用できますが引数のリストの最後に記述する必要があります可変長引数で定義した仮引数は配列として扱うことができます

```java
public class HelloWorld {
    static public  void main(String [] args) {
        int result = add(3,5);
        int result2 = add(3,5,7,9,9);
        System.out.println("足し算の結果=" + result);
        System.out.println("足し算の結果=" + result2);
    }
    static int add(int ...nums) {
        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        return sum;
    }
}
```



8
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?