Javaにおけるメソッドの基本

メソッドの定義

メソッドは以下の構文で定義されます:

アクセス修飾子 戻り値の型 メソッド名(引数リスト) {
    メソッド本体
}

例としてmainメソッド:

public static void main(String[] args) {

}

メソッドの種類

  1. 引数なし・戻り値なし
  2. 引数なし・戻り値あり
  3. 引数あり・戻り値なし
  4. 引数あり・戻り値あり

引数なし・戻り値なし

public class MethodExample {
    public static void main(String[] args) {
        MethodExample example = new MethodExample();
        example.printSeparator();
        System.out.println("Java学習へようこそ");
        example.printSeparator();
    }

    public void printSeparator() {
        System.out.println("------------------");
    }
}

引数なし・戻り値あり

public int calculateArea() {
    int width = 10;
    int height = 5;
    return width * height;
}

引数あり・戻り値なし

public void compareValues(double x, double y) {
    double larger = (x > y) ? x : y;
    System.out.println("大きい値は:" + larger);
}

引数あり・戻り値あり

public long factorial(int number) {
    long result = 1;
    for(int i = 1; i <= number; i++) {
        result *= i;
    }
    return result;
}

配列を引数にとるメソッド

public void displayArray(int[] numbers) {
    for(int i = 0; i < numbers.length; i++) {
        System.out.println("要素[" + i + "]:" + numbers[i]);
    }
}

配列内の値検索

public boolean containsValue(int[] array, int target) {
    for(int value : array) {
        if(value == target) {
            return true;
        }
    }
    return false;
}

メソッドのオーバーロード

同じ名前のメソッドを以下のように定義できます:

  • 引数の型が異なる
  • 引数の個数が異なる
  • 引数の順序が異なる

プリミティブ型の値渡し

public static void main(String[] args) {
    MethodExample example = new MethodExample();
    int value = 5;
    example.modifyPrimitive(value);
    System.out.println(value); // 5が出力される
}

public void modifyPrimitive(int input) {
    input = 10;
    System.out.println(input); // 10が出力される
}

プリミティブ型は値のコピーが渡されるため、元の値は変更されません。

参照型の値渡し

public static void main(String[] args) {
    MethodExample example = new MethodExample();
    int[] numbers = {1, 2, 3, 4, 5};
    example.modifyArray(numbers);
    System.out.println(numbers[2]); // 88が出力される
}

public void modifyArray(int[] array) {
    array[2] = 88;
}

配列は参照が渡されるため、メソッド内で内容を変更すると元の配列も変更されます。

可変長引数

public static void main(String[] args) {
    MethodExample example = new MethodExample();
    example.calculateSum(1, 2, 3);

    int[] values = {4, 5, 6};
    example.calculateSum(values);
}

public void calculateSum(int... numbers) {
    int total = 0;
    for(int num : numbers) {
        total += num;
    }
    System.out.println("合計:" + total);
}

public void calculateSum(int base, int... numbers) {
    int total = base;
    for(int num : numbers) {
        total += num;
    }
    System.out.println("ベースからの合計:" + total);
}

可変長引数は引数リストの最後に配置する必要があります。また、メソッドごとに1つだけ定義できます。

オーバーロードと可変長引数

public int add(int a, int b) {
    System.out.println("通常のメソッド");
    return a + b;
}

public int add(int... values) {
    int total = 0;
    for(int v : values) {
        total += v;
    }
    System.out.println("可変長引数のメソッド");
    return total;
}

通常の引数と一致するメソッドが存在する場合、可変長引数のメソッドよりも優先されます。

タグ: Java メソッド オーバーロード 可変長引数 参照渡し

8月1日 13:01 投稿