メソッドの定義
メソッドは以下の構文で定義されます:
アクセス修飾子 戻り値の型 メソッド名(引数リスト) {
メソッド本体
}
例としてmainメソッド:
public static void main(String[] args) {
}
メソッドの種類
- 引数なし・戻り値なし
- 引数なし・戻り値あり
- 引数あり・戻り値なし
- 引数あり・戻り値あり
引数なし・戻り値なし
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;
}
通常の引数と一致するメソッドが存在する場合、可変長引数のメソッドよりも優先されます。