1. メソッド宣言の構文
Java のメソッド宣言は料理本のレシピに似ています。メソッドが返すもの(型)、名前、必要な材料(パラメーター)、そして作り方(メソッド本体)を書きます。
一般形:
tip_vozvrashchaemogo_znacheniya imyaMetoda(parametry)
{
// ここにコマンドを書く
}
- 戻り値の型 — メソッドが何を返すか(例: int、void — 何も返さない場合、String など)。
- メソッド名 — あなたが付ける名前(Java の規則に従う)。
- パラメーター — メソッドが使用する変数の一覧(空でも可)。
- メソッド本体 — 波かっこ { } の中に書く処理。
パラメーターなしのメソッド例
void printHello()
{
System.out.println("こんにちは、世界!");
}
解説: void — メソッドは何も返しません。printHello — 名前。() — パラメーターなし。
パラメーターありのメソッド例
void printName(String name)
{
System.out.println("こんにちは、" + name + "!");
}
解説: void — 値を返しません。printName — メソッド名。String name — String 型のパラメーターが 1 つ。
複数パラメーターのメソッド例
void printSum(int a, int b)
{
System.out.println("合計: " + (a + b));
}
解説: パラメーターはカンマで区切ります。メソッド内では通常の変数として使えます。演算子 + は加算を行います。
重要!
- メソッドはクラスの中で宣言し、他のメソッドの中では宣言しません。
- Java ではメソッドの中にメソッドを宣言することはできません—いわゆる「マトリョーシカ」はなしです。
2. メソッドの呼び出し
メソッドを宣言するのは、まるで「コーヒーを作ります」と札を掛けるようなものです。実際にコーヒーを出すには、メソッドを呼び出す—つまりその名前を書いてパラメーターの値を渡す—必要があります。
メソッドの呼び出し方
メソッドが同じクラスにあり、static(main と同様)として宣言されているなら、単に名前で呼び出せます。
printHello();
printName("アリサ");
printSum(3, 5);
メソッドが static でない場合は、オブジェクト経由で呼び出します(これはクラスとオブジェクトを学ぶときに扱います)。
例: main からメソッドを呼び出す
public class MethodsDemo
{
public static void main(String[] args)
{
printHello();
printName("ボブ");
printSum(10, 20);
}
static void printHello()
{
System.out.println("こんにちは、世界!");
}
static void printName(String name)
{
System.out.println("こんにちは、" + name + "!");
}
static void printSum(int a, int b)
{
System.out.println("合計: " + (a + b));
}
}
注意: メソッドには static 修飾子が付いており、main(これも static)から呼び出せるようになっています。
3. パラメーターと引数とは?
パラメーター — メソッドを宣言するときに括弧内で宣言する変数。
引数 — メソッドを呼び出すときに実際に渡す値。
たとえ話: パラメーターは買い物リスト、引数は実際にカゴに入れる品物です。
例
static void greet(String name) // name — パラメーター
{
System.out.println("こんにちは、" + name + "!");
}
public static void main(String[] args)
{
greet("カーチャ"); // "カーチャ" — 引数
greet("ヴァーシャ"); // "ヴァーシャ" — 引数
}
greet("カーチャ") を呼び出すと、メソッド内で変数 name は "カーチャ" になります。
複数のパラメーター
static void printInfo(String name, int age)
{
System.out.println("名前: " + name + "、年齢: " + age);
}
public static void main(String[] args)
{
printInfo("マーシャ", 25);
printInfo("ペーチャ", 31);
}
注意! パラメーターの型と順序は、宣言どおりに一致していなければなりません。
4. 実践: 自分のメソッドを書いてみよう
ユーザー名付きの挨拶を出力するメソッド
static void sayHelloTo(String name)
{
System.out.println("こんにちは、" + name + "!");
}
public static void main(String[] args)
{
sayHelloTo("アンドレイ");
sayHelloTo("エルヴィーラ");
}
2 つの数の合計を計算して表示するメソッド
static void printSum(int a, int b)
{
int sum = a + b;
System.out.println("合計: " + sum);
}
public static void main(String[] args)
{
printSum(7, 8);
printSum(15, -5);
}
配列の要素を出力するメソッド
static void printArray(int[] array)
{
System.out.print("配列: ");
for (int i = 0; i < array.length; i++)
{
System.out.print(array[i] + " ");
}
System.out.println();
}
public static void main(String[] args)
{
int[] nums = {1, 2, 3, 4, 5};
printArray(nums);
}
同じ文字列を n 回出力するメソッド
static void repeatPrint(String text, int n)
{
for (int i = 0; i < n; i++)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
repeatPrint("Java はクールだ!", 3);
}
5. メソッドがアプリ構築にどう役立つか
簡単なコンソールゲームや電卓を書こうとする場合でも、各タスクをメソッドとして切り出すとコードが分かりやすくなります。
例: ミニ電卓
public class Calculator
{
public static void main(String[] args)
{
printGreeting();
printSum(3, 7);
printDifference(10, 4);
}
static void printGreeting()
{
System.out.println("電卓へようこそ!");
}
static void printSum(int a, int b)
{
System.out.println("合計: " + (a + b));
}
static void printDifference(int a, int b)
{
System.out.println("差: " + (a - b));
}
}
将来は新しいメソッド(乗算、除算、数値配列の処理など)を追加していけるので、アプリが長大な「一枚もの」のコードに崩れずに成長していきます。
6. 役に立つ注意点
メソッド名
- メソッド名は通常、小文字で始まり、camelCase で書きます: printSum、sayHelloTo、calculateArea。
- 名前は動作を表すべきです。doStuff や method1 は避けましょう。
パラメーターの順序
- 呼び出し時には、パラメーターの順序と型を守りましょう。
- メソッドが printInfo(String name, int age) を受け取る場合、printInfo(25, "マーシャ") のようには呼び出せません。
同じ名前のメソッドを2つ宣言できますか?
はい。パラメーターリスト(型や個数)が異なれば可能です。これをメソッドのオーバーロードと呼びます。
static void printSum(int a, int b) { /* ... */ }
static void printSum(int a, int b, int c) { /* ... */ }
このトピックは別の講義で扱います—今は、Java では名前が同じメソッドを 1 つに限らないことだけ覚えておけば十分です。
7. メソッドとパラメーターでよくあるミス
エラー1: 呼び出し時のパラメーターの数や型が一致しない。
メソッドが printSum(int a, int b) と宣言されているのに、printSum(5) と呼び出すと、そのようなメソッドは存在しないとコンパイラに言われます。同様に、printSum("五", 7) は型の不一致です。
エラー2: パラメーターと引数を混同する。
メソッド宣言ではパラメーター(例: int a, int b)、呼び出しでは引数(printSum(5, 7))を書きます。main に同じ名前の変数を作る必要はありません—重要なのは型と順序の一致です。
エラー3: メソッドの中にメソッドを宣言しようとする。
Java ではメソッドはクラスレベルでのみ宣言できます。別のメソッドの中では宣言できません。
エラー4: static を付けずに main から呼び出す。
main からメソッドを呼び出す場合は、宣言に static を付けるか、オブジェクトを生成してそのメソッドを呼び出しましょう。詳細はオブジェクト指向を学ぶ際に扱います。
GO TO FULL VERSION