クッキーの生地を型に当てはめて調理するところを想像してください。
どのような生地を流し込んでも星形クッキーは作れますよね?
チョコレート生地なら星形のチョコレートクッキー、
キャラメル生地なら星形のキャラメルクッキー。みたいに。
プログラムでも同じようなことをしています。
当てはめる型がDogクラス、
new してどんどん値をはめていく部分が 生地を流し込む工程に相当します。
そのようにして出来上がったクッキーを保管しておく巨大な冷蔵庫、
それがメモリ空間で、作ったmydogオブジェクトもメモリ空間上にあります。
クッキーはできあがったら、自分で食べたり親しい人にあげたりすると思います。
そのようにクッキーを消費する予定を立てる時に、こんなスケジュールを書くとします。
「10:30にAさんにキャラメルクッキーをあげにいく。」
「キャラメルクッキーは冷蔵庫の3段目の左奥」みたいに、
予定を立てる段階では、クッキーそのものをスケジュール帳に貼り付けるのではなく、
クッキーがある場所だけ把握しておいて、スケジュール帳に書くと思います。
まさにプログラムでも同じことをしており、
メモリのどの場所にmydogオブジェクトがあるのか書いたカードを
やり取りします。これが参照変数です。
というわけで、1は参照変数なのですが、
2も参照変数です。しかし参照先が書いてないので、
まだ空のカードという風に解釈すれば良いと思います。