【发布时间】:2017-05-01 20:45:19
【问题描述】:
我想问我这个例子是否正确,所以如果你将引用类型分配给引用类型,例如:
ClassName p1 = new ClassName();
ClassName p2 = p1;
所以如果我要谈论第一行,当您创建引用变量(类)时,同时发生了两件事。首先,在 HEAP 上(在内存中的某个地址)上创建引用类型(类)的对象,其次,在 HEAP 上创建的对象的引用(到创建对象的位置的地址)在堆栈上创建并存储在变量。
我知道,对于第二行,p1 的引用将被复制到 p2,因此 p2 和 p1 将具有指向内存(堆)中相同对象的相同引用。但我真的很想知道这背后发生了什么。我也知道,存储在引用变量中的引用是在堆栈上分配的。
因此,如果我说将引用类型分配给引用类型背后的真实情况。会不会是:因为引用(“地址”到内存中的对象)实际上就像“值类型”(我不是指堆上的对象),所以将引用类型分配给引用类型,我可以理解为分配引用(地址)按值?
感谢您的回答。
【问题讨论】:
-
简短的回答是肯定的。