Java に次のコードがあるとします。連絡先は名前と番号から作成され、電話帳は連絡先の配列から作成されます。
//set -> このメソッドは本当に新しいメモリの場所をコピーして作成するのか、それとも単にメモリを指すだけなのか?
public void setContact(Contact[] contact)
{
this.contact = contact; // <----this
}
ありがとう。
配列はオブジェクトであり、Java ではオブジェクト参照は値によって渡されます。したがって、このメソッドを呼び出すとthis.contact
、引数として渡された連絡先配列への参照のコピーが作成されます。配列要素のコピーは作成されません。配列のコピーは作成されません。
これを使用すると、スタックからヒープにあるオブジェクトへの参照を設定します。つまり、オブジェクトはヒープにあり、参照はスタックにあります
new キーワードのみを使用すると、ヒープ内のスペースを取得する新しいオブジェクトを取得できます