关于浅拷贝嵌套我不太理解。class A
{
int x;
}class B
{
int y;
A a;
}
1:static void Main()
{
B obj1 = new B();
B obj2 = obj1;
}内存分配是不是下面这个样?
stack GC heap
obj1 ------> y
obj2 a ----> x 2:对于浅拷贝,只复制引用不复制实际的对象。B obj1 = new B();
obj2 = obj1.clone(); //假设clone方法实现浅拷贝那么这个地方,obj2的内存分配是什么样的?是和上面一样的直接指向原来的实例,还是会创建一个新的实例 ,复制各个字段(引用字段只复制引用),如下图stack GC heap
obj1 ------> y
a ----> x
^
obj2 ------> y |
a ------|
对于这种类型中还有引用类型的,浅拷贝是如何拷贝的?3:对于memberwiseclone方法,我看了好多地方,他是浅拷贝。但又会创建新的实例,然后复制原对象的各个字段。B obj1 = new B();
obj2 = obj1.clone(); //假设clone方法为调用memberwiseclone方法这个内存分配又是怎么样的?
{
int x;
}class B
{
int y;
A a;
}
1:static void Main()
{
B obj1 = new B();
B obj2 = obj1;
}内存分配是不是下面这个样?
stack GC heap
obj1 ------> y
obj2 a ----> x 2:对于浅拷贝,只复制引用不复制实际的对象。B obj1 = new B();
obj2 = obj1.clone(); //假设clone方法实现浅拷贝那么这个地方,obj2的内存分配是什么样的?是和上面一样的直接指向原来的实例,还是会创建一个新的实例 ,复制各个字段(引用字段只复制引用),如下图stack GC heap
obj1 ------> y
a ----> x
^
obj2 ------> y |
a ------|
对于这种类型中还有引用类型的,浅拷贝是如何拷贝的?3:对于memberwiseclone方法,我看了好多地方,他是浅拷贝。但又会创建新的实例,然后复制原对象的各个字段。B obj1 = new B();
obj2 = obj1.clone(); //假设clone方法为调用memberwiseclone方法这个内存分配又是怎么样的?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货