メソッドの引数と戻り値

スポンサーリンク
アイキャッチjava All

引数

メソッドの定義で登場した()内の引数について説明します。

public static 戻り値の型 メソッド名(型 引数) {
//実行する処理
}

引数とは

メソッドの引数とは、メソッド実行時にメソッドに渡すデータのことを指します。

メソッドはこの渡されたデータをメソッドブロックの中、メソッドの中身の処理で使います。

引数を利用することで、同じ処理を行いながらも異なるデータに対してメソッドを実行することが可能です。

例えば、友達の名前を表示するメソッドを考えてみましょう。この場合、メソッドには友達の名前を引数として渡すことができます。以下に、例を示します。

public class Sample{

    public void printFriendName(String friendName) {
        //メソッド呼び出し時に渡された引数をfriendNameに格納し、情報を使用して処理を実行します
        //渡された引数によって同じ出力処理でも異なる情報を出力できます
        System.out.println("友達の名前は" + friendName + "です。");
    }

    public static void main(String[] args) {
        //メソッドを呼び出すときに引数で"太郎"を渡します
        printFriendName("太郎"); //太郎を出力
        //メソッドを呼び出すときに引数で"花子"を渡します
        printFriendName("花子");//花子を出力
    }
}

この例では、printFriendNameというメソッドを定義しています。引数としてString型のfriendNameを受け取り、友達の名前を表示する処理を行っています。

このメソッドを使用する際には、例えば以下のように引数として友達の名前を渡します。

上記のコードを実行すると、コンソールに「友達の名前は太郎です。」「友達の名前は花子です。」と表示されます。

このように、引数を使うことでメソッドは柔軟に動作し、様々なデータや情報に対して処理を行うことができます。

引数を利用することで、同じ処理を繰り返し実行する際にも、異なるデータを扱うことができます。

何も情報を渡さないときはメソッドの()内に何も書かなければ良いわけですね。

public class Sample{
    //メソッドブロック内で引数を使用する必要がないため()内は記述しない
    public static void printMyName() {
        String myName = "山田太郎";
        System.out.println(myName);
    }

    public static void main(String[] args) {
        printMyProfile();
    }
}

メソッドの定義側、呼び出し側の()内を引数と呼びますが詳しく呼ぶと、メソッドの定義側を「仮引数」、メソッドの呼び出し側を「実引数」と言います。

public class Sample{
    //メソッドの定義側の引数を仮引数という
    public void printFriendName(String friendName) {
        System.out.println("友達の名前は" + friendName + "です。");
    }

    public static void main(String[] args) {
        //メソッドの呼び出し側の引数を実引数という
        printFriendName("太郎"); //太郎を出力
    }
}

複数の引数

引数を増やすことによって、メソッドが必要な情報をより詳細に受け取ることができます。

引数の増加は、メソッドの柔軟性や機能性を向上させるために活用されます。

定義の仕方は簡単で「 , 」区切りで引数を増やしていきます。

メソッドの定義

public static 戻り値の型 メソッド名(型 引数, 型 引数) {
//実行する処理
}

引数の増加の理由とメリット

引数の増加は、以下のような理由やメリットがあります。

引数を増やすことで、メソッドがより具体的な情報を受け取ることができます。

例えば、年齢や住所などの個人の情報を引数として受け取ることで、特定の処理を行う際に必要な情報を提供することができます。

public class Sample{
    public void greetPerson(String name, int age, String address) {
        System.out.println("名前は" + name + "。");
        System.out.println("年齢は" + age + "。");
        System.out.println("住所は" + address + "。");
    }

    public static void main(String[] args) {
        greetPerson("山田太郎", 25, "東京都");//名前は山田太郎。年齢は25歳。住所は東京都。を出力
    }
}

このメソッドを使用する際には、名前、年齢、住所を引数として渡します。

引数の増加によって、より具体的な情報をメソッドに提供することができます。

例えば、血液型や性別など、さらに多くの情報を受け取ることができるようになります。

メソッド間の変数のスコープ

変数のスコープ

変数のスコープとは、その変数がどの範囲で有効かを表します。

スコープが変数が利用できる範囲を決める重要な役割を果たしています。

ローカル変数

Javaのメソッド内でのみ使用できる変数をローカル変数と呼びます。

ローカル変数は、メソッド内で宣言され、そのメソッド内でのみ利用できます。

仮引数もローカル変数に含まれます。

public class Sample{
    public static void anotherMethod() {
        // mainメソッドで宣言された変数xにはアクセスできないため、以下の行はコンパイルエラーとなる
        System.out.println("別メソッド内でのxの値: " + x);
    }


    public static void main(String[] args) {
        int x = 5;  // mainメソッド内のローカル変数xの宣言と初期化
        System.out.println("mainメソッド内のxの値: " + x);

        // 別メソッドの呼び出し
        anotherMethod();
    }
}

上記の例では、mainメソッド内でローカル変数xが宣言されています。

しかし、anotherMethod内ではxに直接アクセスすることはできません。

anotherMethodxの値を表示しようとすると、コンパイルエラーが発生します。

このように、ローカル変数は宣言されたメソッド内でのみ使用できます。

他のメソッドからは直接参照することはできません。

もし別のメソッドでローカル変数の値を利用したい場合は、引数を使用して値を渡す必要があります。

ただし混乱の元になるので仮引数の引数名は変数名と異なる名前を命名して下さい。

public class Sample{
    //変数名と異なる引数名number命名
    public static void anotherMethod(int number) {
        System.out.println("別メソッド内でのxの値: " + number);
    }


    public static void main(String[] args) {
        int x = 5;
        System.out.println("mainメソッド内のxの値: " + x);

        // 別メソッドの呼び出し
        anotherMethod(x);
    }
}

同様にanotherMethodで宣言した変数や仮引数はmainメソッドで使用ができないことも覚えて下さい。

戻り値

戻り値とは

メソッドの戻り値とは、メソッドが実行された後に呼び出し元に返す結果のことです。

例えば、以下のようにcalculateSum()で計算した結果をmainメソッド内の処理で表示したいときはどうしますか。

変数sumはmainメソッドとは別のメソッドのためスコープの範囲外のため使用できません。

public class Sample{
    public static void calculateSum(int x, int y) {
        int sum = x + y; //ここの計算結果をmainメソッドでも使いたいsumはスコープの範囲外
    }

    public static void main(String[] args) {
        multiplyNumbers(3, 4);
        System.out.println("答え: "); //calculateSumの計算結果を答えで出力したい
    }
}

そこで戻り値を使ってやることによって、呼び出し元に計算結果を返してやります。

public class Sample{
    public static void calculateSum(int x, int y) {
        int sum = x + y; //ここの計算結果をmainメソッドでも使いたいsumはスコープの範囲外
    }

    public static void main(String[] args) {
        int result = multiplyNumbers(3, 4); // メソッドの呼び出しと戻り値を受け取りresultに格納
        System.out.println("答え: " + result); //calculateSumの計算結果を出力
    }
}

コメント

タイトルとURLをコピーしました