コツコツ学習ブログ

プログラマのweb上のメモ的なもの

メソッド

戻り値とは

呼び出されたメソッドから、呼び出し元のメソッドへ値を返すこと

戻される値のことを戻り値(または返り値)という

値の戻し方
public static 戻り値の型 メソッド名(引数リスト) {
           処理
   return 戻り値;
  • 戻り値の型はreturnされる値と同じ型を指定
  • 何も戻さない場合はvoidを指定。voidは何も無いという意味

戻り値を受け取る

戻り値を変数で受け取るパターン

型 変数名 = メソッド名(引数リスト);

public class Main {
    public static void main(String args[]) {
        int getNum = sum(2, 4);
        System.out.println(getNum);
    }

    //
    public static int sum(int x, int y) {
        int num = x + y;
        return num;
    }
}

メソッドの戻り値をそのまま使うパターン

public class Main {
    public static void main(String args[]) {
        System.out.println(sum(2, 3));
        System.out.println(sum(sum(2, 3), sum(1, 4)));
    }

    //
    public static int sum(int x, int y) {
        int num = x + y;
        return num;
    }
}

オーバーロード

同じ名前のメソッドを定義すること。

仮引数が異なれば同じ名前のメソッドを複数定義することが可能。 同じ名前のメソッドが複数あったとしても、仮引数の型が異なっていれば JVMが呼び出し元の引数(実引数)をみて、その引数の肩に一致するメソッドを呼び出す。

また、仮引数の個数が違う場合もオーバーロードが可能。

メソッドのシグネチャ

下記のようなメソッド宣言に記述するメソッド名、 引数の個数や型とその並び順をまとめて、メソッドのシグネチャという。 ※add(int x, int y)が該当

public static int add(int x, int y)

オーバーロードは、シグネチャが重複しない場合のみ許される

メソッドの引数や戻り値に配列を用いる

サンプルコード

public class Main {
    public static void main(String args[]) {
        int[] array = { 1, 2, 3 };
        printArray(array);
    }

    //int型配列を受け取り、全ての要素を表示するメソッド
    public static void printArray(int[] array) {
        for (int element : array) {
            System.out.println(element);
        }
    }
}

 値渡しと参照渡し

  • 値渡し 基本型の変数をメソッド呼び出しで渡した場合がこれに当たる。

呼び出し元の変数の内容が、呼び出し先の引数にコピーされる。 呼び出し先で引数の内容を書き換えても、呼び出し元の変数は変化しない。

  • 参照渡し 配列をメソッド呼び出しで渡した場合がこれに当たる。

呼び出し元の配列のアドレスが、呼び出し先の引数にコピーされる。 呼び出し先で配列の実態を書き換えると、呼び出し元にも影響する。 (同じ配列のアドレスを参照している為)

サンプルコード

public class Main {
    public static void main(String args[]) {
        int[] array = { 1, 2, 3 };
        //メソッド実行
        incArray(array);
        //拡張for文でarrayの全要素を出力
        for (int i : array) {
            System.out.println(i);
        }
    }

    //int型配列を受け取り、配列内の要素全てに1を加えるメソッド
    //配列の要素に +1 インクリメントを行う
    public static void incArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i]++;
        }
    }
}

戻り値に配列を返すメソッドのサンプル

public class Main {
    //int型配列を作成して戻すメソッド
    //実引数にはint型の配列の要素数を受け取る
    //戻り値には配列の要素をインクリメントした配列を返す
    public static int[] makeArray(int size) {
        int[] newArray = new int[size];
        for (int i = 0; i < newArray.length; i++) {
            newArray[i] = i;
        }
        return newArray;
    }

    public static void main(String[] args) {
        int[] array = makeArray(3);
        for (int i : array) {
            System.out.println(i);
        }
    }
}

戻り値も引数同様、配列の先頭要素のアドレスが mainメソッドに戻される。