オブジェクトの作成 - 1

「こんにちは、またあなたのお気に入りの先生です。あなたがとても上達しているので、オブジェクトとその扱い方についてお話しすることにしました。」

"オブジェクトを作成するには、キーワード 'new' に続いてその型名 (クラス名) を入力する必要があります。たとえば、'Cat' という名前のクラスがあるとします。"

コード 説明
Cat cat;
cat という名前の Cat 参照変数を宣言します。変数 cat の値は null です。
new Cat();
猫オブジェクトを作成します。
Cat cat = new Cat();
cat という名前の Cat 参照変数を作成します。
新しい Cat オブジェクトを作成します。新しく作成されたオブジェクトへの参照を変数 cat に割り当てます。
Cat kitty = new Cat();
Cat smokey = new Cat();
2 つのオブジェクトが作成されます。それらへの参照は 2 つの異なる変数に割り当てられます。
Cat kitty = new Cat();
Cat smokey = new Cat();

smokey = kitty;
2 つのオブジェクトが作成されます。それらへの参照は 2 つの異なる変数に割り当てられます。

次に、変数smokyを、変数kittyによって参照されるオブジェクトへの参照と等しく設定します。両方の変数が最初に作成されたオブジェクトを参照するようになりました。
(2 番目のオブジェクトはどこからも参照されなくなったため、ガベージとみなされます)

Cat kitty = new Cat();
Cat smokey = null;

smokey = kitty;

kitty = null;
1 つの Cat オブジェクトが作成され、それへの参照が最初の変数 (kitty) に割り当てられます。2 番目の変数 (smokey) には、空 (null) の参照が格納されます。

両方の変数は同じオブジェクトを参照します。

現在、オブジェクトを指すのは「smoky」のみで、「kitty」ではありません。

「オブジェクトを作成し、参照を変数に保存しなかったらどうなるでしょうか?」

「変数に割り当てずにオブジェクトを作成しただけの場合、Java マシンはそれを作成し、それをガベージ (未使用のオブジェクト) として宣言します。しばらくすると、オブジェクトはガベージ コレクション中に破棄されます

「不要になった物はどうやって処分すればいいの?」

「そうではありません。オブジェクトを参照する変数がなくなるとすぐに、そのオブジェクトはガベージとしてラベル付けされ、次回ガベージを収集するときに Java マシンによって破棄されます。

オブジェクトへの参照が少なくとも 1 つある限り、そのオブジェクトはアクティブとみなされ、破棄されません。オブジェクトをより早く破棄したい場合は、そのオブジェクトを参照するすべての変数にnullを割り当てることで、そのオブジェクトへのすべての参照をクリアできます。

「なるほど。ここ数回のレッスンに比べるとかなり簡単ですね。」

「ディエゴは君のために一晩中起きて課題を考えてくれたんだ。彼は君のためだけに特別な努力をしてくれたんだ。彼は素晴らしいユーモアのセンスを持っているんだね?」


Codegym University コースの一部としてのメンターによる講義の抜粋。フルコースにお申し込みください。