【Java】引数とは?値渡し・参照渡し・使い方(サンプルコード)

【Java】引数とは?値渡し・参照渡し・使い方(サンプルコード)

今回は「引数」とは何か、書き方など具体例を踏まえながら解説します。

目次

    引数(ひきすう)とは

    引数とは、メソッドを呼び出すときに渡す値のことです。

    引数を理解することで、プログラム全体の効率を良くすることができます。

    身近な例でいうと「System.out.println("Hello World");」があります。

    これは、printlnメソッドに引数として「"Hello World"」を指定しています。

    引数を受け取ったprintlnメソッドは、コンソールに「"Hello World"」を出力するためのコードを実行していました。

    値渡しと参照渡し

    引数には値渡しと参照渡しという、2種類の値の渡し方があります。

    これらは、引数のデータ型が「基本データ型」か「参照型か」によって変わります。

    値渡し

    値渡しは変数に格納されているデータの中身をコピーして渡し、その変数自体は変わらない値の渡し方です。

    public static void main(String[] args) {
    
            int num = 10;
    
            System.out.println("メソッド呼び出し前:" + num);
    
            test(num);
    
            System.out.println("メソッド呼び出し後:" + num);
    
    }
    
    
    
    
    public static int test(int num) {
    
            num = 20;
    
            return num;
    
    }
    実行結果
    メソッド呼び出し前:10
    
    メソッド呼び出し後:10

    この例は、①mainメソッドでint型変数numを初期化、②testメソッドを呼び出してコピーされた10を引数として渡す、③testメソッド内でnum20に変更、④mainメソッドで再度表示、という内容です。

    test(num)の値はtestメソッドで変更されたため20ですが、変更された値はコピーされたものだったため10のままです。よって、メソッド呼び出し後でもnumの値は10のままです。

    参照渡し

    参照渡しは、元の変数に格納されていたデータの内容が変わる渡し方です。データが入っていたメモリの場所を指す参照値を渡します。

    public static void main(String[] args) {
    
            String[] array = {"りんご", "いちご", "ばなな"};
    
            System.out.println("メソッド呼び出し前:" + array[0]);
    
            test(array);
    
            System.out.println("メソッド呼び出し後:" + array[0]);
    
    }
    
    
    
    
    public static String test(String[] array) {
    
            array[0] = "ぶどう";
    
            return array[0];
    
    }
    実行結果
    メソッド呼び出し前:りんご
    
    メソッド呼び出し後:ぶどう

    この例は、この例は、①mainメソッドでStringarray配列を初期化、②testメソッドを呼び出してarray配列の参照値を引数として渡す、③testメソッド内でarray[0]を「ぶどう」に変更、④mainメソッドで再度表示、という内容です。

    testメソッドに渡されたarrayは値渡しの場合とは異なり、コピーではありません。そのため、mainメソッド内のarraytestメソッド内のarrayは同一の配列を扱っています。よって、testメソッドでの変更がmainメソッドのarray配列に反映され、表示内容が変化しました。

    引数の使い方

    引数の使い方は、以下の2点です。

    • メソッドを呼び出す際に「()」の中に引数として渡したいデータを書く
    • 呼び出されるメソッドのメソッド名の横にある「()」にデータ型と変数を書く

    これをかみ砕いて言うと、「メソッドを呼び出したので、そのメソッドの処理に移ってください。
    その際、この値を持って行って、処理に使ってください」ということになります。

    データの渡し方

    メソッドを呼び出す側が実際に指定する値のことを「実引数(じつひきすう)」と呼びます。実引数では、文字列や数字などを指定します。

    修飾子 戻り値 メソッド名1(){
    
            メソッド名2(実引数);
    
    }

    データの受け取り方

    外部から受け取る値を表す変数のことを「仮引数(かりひきすう)」と呼びます。仮引数では、実引数に合った変数名を付けるようにしましょう。

    修飾子 戻り値 メソッド名2(データ型 仮引数){
    
            // 処理
    
    }

    複数の引数を渡す

    引数は「(5, 7)」のように、カンマ(,)を書くことによって複数個指定することができます。

    その場合、引数は異なるデータ型でも使うことができます。

    public class Sample {
    
            public static void main(String[] args){
    
                    display ("鈴木", 20);
    
                    display ("佐藤", 25);
    
            }
    
           
    
            public static void display(String name, int old){
    
                    System.out.println("名前: " + name + "さん 年齢: " + old);
    
            }
    
    }
    実行結果
    名前: 鈴木さん 年齢: 20
    
    名前: 佐藤さん 年齢: 25

    引数を使ったサンプルコード

    それでは、引数を使った簡単なサンプルコードを書いてみましょう。

    以下のコードでは、戻り値を扱います。

    サンプルコード
    public class Calculation {
    
           
    
            public static void main(String[] args){
    
                   
    
                    // plusメソッドに引数として10と5を渡す
    
                    System.out.println("加算: " + plus(10, 5));
    
                     
    
                    // minusメソッドに引数として7と3を渡す
    
                    System.out.println("減算: " + minus(7, 3));      
    
                     
    
                    // multiplyメソッドに引数として2と8を渡す
    
                    System.out.println("乗算: " + multiply(2, 8));
    
                     
    
                    // divideメソッドに引数として18と6を渡す
    
                    System.out.println("除算: " + divide(18, 6));
    
            }
    
           
    
            // num1に10、num2に5を受け取る
    
            public static int plus(int num1, int num2){
    
                    int sum = num1 + num2;
    
                    return sum;
    
            }
    
           
    
            // num1に7、num2に3を受け取る
    
            public static int minus(int num1, int num2){
    
                    int sum = num1 - num2;
    
                    return sum;
    
            }
    
           
    
            // num1に2、num2に8を受け取る
    
            public static int multiply(int num1, int num2){
    
                    int sum = num1 * num2;
    
                    return sum;
    
            }
    
           
    
            // num1に18、num2に6を受け取る
    
            public static int divide(int num1, int num2){
    
                    int sum = num1 / num2;
    
                    return sum;
    
            }
    
    }
    実行結果
    加算: 15
    
    減算: 4
    
    乗算: 16
    
    除算: 3

    まとめ

    今回は、引数について触れてきました。

    引数の理解を深めることで、プログラムを作る際のできることを増やすことに役立ちます。

    この機会に引数の使い方を覚えて、実際にプログラムを組んでみてください!

    まずは選考会へ!

    「プログラマーになって一緒に働きませんか?」
    テックドリームの選考会は、選考だけでなく「相互理解」の場。不安なことも直接ご相談いただけます。


    電話でのご予約

    Webかんたん予約ができない場合や、ご質問がございましたら、
    お気軽にお電話ください。

    0120-262-242
    9:00~18:00(土日祝を除く)

     

    >テクド・リム

    テクド・リム


    「テックドリーム」の公式キャラクター。
    プログラマーだった父の影響を受けて、
    夢に向かって日々勉強に励むプログラマーのタマゴ。
    夢は「世界を変える、すごいプログラマーになること!」

    CTR IMG