特に説明するような内容ではないんだけど。
Javaではメソッドの引数は参照渡しじゃなくすべて値渡し。
void fuga(int a) { a = 1; } void hoge() { int b = 0; fuga(b); System.out.println(b); } // hogeを呼び出してもbは0のまま
つまり引数には値のコピーを渡す。
プログラムを始めた人はよく間違ってしまうよね。
でもプリミティブじゃなくて参照型でこういうサンプルを作ると、
よく参照渡しと勘違いされてしまう。
参考書とかでもJavaは参照渡しと間違っているのもあるらしい。
class Human { String name; public void setName(String name) { this.name = name; } } void fuga(Human h) { h.setName("jyukutyo"); } void hoge() { Human h = new Human(); huga(h); System.out.println(h.name); } // hogeを呼び出すとnameは"jykutyo"になる
nameが変わったから参照渡し、ではなくて、あくまで参照を値で渡してる。
って頭ではわかってるんだけど、参照を値で渡すってどういうことかいまいちピンとこないなあ。
アドレスを直接渡してるのではなくて、アドレスへの参照を元の参照からコピーして作成して、
それを渡してるってことが参照を値で渡すってこと??