new
キーワードがJavaでどのように動作するかわかりません。 new
キーワードを使用するたびに、新しいオブジェクトがヒープ上に作成されることを確認していますか?Javaでの新しいキーワードの役割
私は例 -
class Mixer {
Mixer() { }
Mixer(Mixer m) { m1 = m; }
Mixer m1;
public static void main(String[] args) {
Mixer m2 = new Mixer();
Mixer m3 = new Mixer(m2); // Does it create any new mixer object?
m3.go();
Mixer m4 = m3.m1; m4.go();
Mixer m5 = m2.m1; m5.go();
}
void go() { System.out.print("hi "); }
}
次私が勉強していたこの疑問を持っラインMixer m3 = new Mixer(m2);
は、任意の新しいオブジェクトを作成しないコンストラクタを呼び出します。それで、新しいオブジェクトが作成されていませんか?
また、どの変数がプログラムの最後にどのオブジェクトを参照するか、つまり変数m5
の場合はNullPointerExcetion
になるまでです。
なぜ新しいオブジェクトが作成されないと思いますか? –
http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html –
@ DaveNewton-新しいオブジェクトが作成された場合、どの変数がそのオブジェクトを参照していますか? –