★★Java質問・相談スレッド142★★
■ このスレッドは過去ログ倉庫に格納されています
0007デフォルトの名無しさん
2010/11/19(金) 17:30:53lisr#get しても新たな配列は作られない。
String[] array = new String[1];
set(array);
System.out.println(array[0]); //くそ と表示される
public void set(String[] a) {
a[0] = "くそ"; //指定された配列につっこむ
//a は呼び出し元の array とまったく同じ存在を指す。
//同じ存在、というのは、同じ値を持つ、という意味ではない。
//メソッドの中と外で、同じものに対する呼び名が変わっているだけに過ぎない。
//この時点における a[0] = "くそ" は、
//呼び出し元で array[0] = "くそ" としたのとおなじこと。
a = new String[1];
//上記以降は、この a は array とはまったく別の存在を指す。
a[0] = "みそ";
//これは呼び出し元の array が指しているものとは違うものを指す。
//なお、この a が指す新たな配列は、このメソッドが終わり次第、
//プログラム上からは一切アクセス不能になる→そのうちメモリからも消える
}
■ このスレッドは過去ログ倉庫に格納されています