23. 参照渡し

23. 参照渡し

値渡し

lesson 054

class Lesson054 {
    String name;
    int    age;

    public static void main(String args[]) {
        System.out.println("名前\t\t年齢");

        Lesson054 hina = new Lesson054();
        hina.name      = "成瀬川なる";
        hina.age       = 17;
        hina.write();

        prm_ch(hina.name , hina.age);

        hina.write();
    }

    void write() {
        System.out.println(name + "\t" + age);
    }

    static void prm_ch(String name , int age) {
        name = "前原しのぶ";
        age  = 13;
        System.out.println(name + "\t" + age + "(prm_chメソッド内)");
    }
}

実行結果

L:\>java Lesson054
名前 年齢
成瀬川なる 17
前原しのぶ 13(prm_chメソッド内)
成瀬川なる 17

オブジェクトは 参照渡し

lesson 055

class Lesson055 {
    String name;
    int    age;

    public static void main(String args[]) {
        System.out.println("名前\t\t年齢");

        Lesson055 hina = new Lesson055();
        hina.name      = "成瀬川なる";
        hina.age       = 17;
        hina.write();

        ref(hina);

        hina.write();
    }

    void write() {
        System.out.println(name + "\t" + age);
    }

    static void ref(Lesson055 obj) {
        obj.name = "前原しのぶ";
        obj.age  = 13;
        System.out.println(obj.name + "\t" + obj.age + "(refメソッド内)");
    }
}

実行結果

L:\>java Lesson055
名前 年齢
成瀬川なる 17
前原しのぶ 13(refメソッド内)
前原しのぶ 13

配列は 参照渡し

lesson 055

class Lesson056 {
    String[] name;
    int[]    age;

    public static void main(String args[]) {
        System.out.println("名前\t\t年齢");

        Lesson056 hina = new Lesson056();
        hina.name      = new String[1];
        hina.age       = new int[1];
        hina.name[0]   = "成瀬川なる";
        hina.age[0]    = 17;
        hina.write();

        ref(hina.name , hina.age);

        hina.write();
    }

    void write() {
        System.out.println(name[0] + "\t" + age[0]);
    }

    static void ref(String[] name , int[] age) {
        name[0] = "前原しのぶ";
        age[0]  = 13;
        System.out.println(name[0] + "\t" + age[0] + "(refメソッド内)");
    }
}

実行結果

L:\>java Lesson056
名前 年齢
成瀬川なる 17
前原しのぶ 13(refメソッド内)
前原しのぶ 13