【JAVA】参照渡しと値渡し Part2

前回の記事からだいぶ時間がたってしまいました。。。
すいません。


さて、続きのお話です。


前回の宿題の答えですが、
『テスト』と出力されるのが正解です。


むむむ??

Stringはオブジェクトなので参照渡し。
つまり、机の上のリンゴをミカンに取り替えたということになり
『ほげほげ』が出力されるのでは??
と考えてしまいがちです。




では、なぜなのかそうなるのか?


一見机の上のリンゴをミカンに取り替えたように思ってしまうのですが、
実は机ごと変わってしまっているのです。

つまり、

山田君の机の上にリンゴがあります。
佐藤さんの机の上にはミカンがあります。

席替えがあり山田君の机の位置に佐藤さんの机が移動になりました。

では、山田君の机の上には何がありますか?

そう。『リンゴ』です。


つまり、前回の例では上のような操作が行われているのです。


厳密に言うと参照渡しはこういう意味です。

山田君の机の上にリンゴがあります。
山田君の机の上のリンゴをミカンに取り替えます。

では、山田君の机の上には何がありますか?


JAVAの用語を使うとどういう意味となるかというと
『オブジェクト(山田君の机)の状態(机の上にあるもの)が変わるとき』




コードで書くとこんな感じです。



public class Sample {

    public static void main(String[] args){
        Bean bean = new Bean();
        bean.setValue("テスト");
        test1(bean);
        System.out.println(bean.getValue());
    }

    public static void test1(Bean bean) {
        bean.setValue("ほげほげ");
    }
}

class Bean {

    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

}




結論を言うと、参照渡し、値渡しという意味は上のようになりますが
不具合を埋め込まずコーディングするという目的を果たすためには
厳密に意味を理解するよりはオブジェクトの状態(持っているもの)を変えてしまうと
影響があるんだ程度に覚えておけばよろしいかと。




参考になりましたらクリックしていただけると励みになります。



【【JAVA】意外と知らない基礎知識の最新記事】
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。