java数组的一道问题
老师说:之所以修改po2的值会影响po1的值,是因为是复制了对象数组的一个引用,所以对于数组1和数组2所表示的对象都是生成在同一个内存中的,但是我打出来看并不是同一个地址...
老师说:之所以修改po2的值会影响po1的值,是因为是复制了对象数组的一个引用,所以对于数组1和数组2所表示的对象都是生成在同一个内存中的,但是我打出来看并不是同一个地址(po1!= po2)啊,这个是怎么一回事呢,还是我的那个地方的概念理解混了呢,请老师们指点下。
展开
1个回答
展开全部
你现在po2 是赋值为new Point[3],这是一个新的数组了,老师说“复制了对象数组的一个引用”,是这样的情况:Point[] po2 = po1; 这时,po2 和po1 就指向同一个对象。
这儿修改po2中的对象会影响po1中的对象是因为Point是一个引用类型。在这个程序中,总共就只有3个Point对象。关系如下图:
如果是这种情况:Point[] po2 = po1; 则关系如下图:
如果这样修改:po2[0] = new Point(5, 5);
在下面这种情况po1[0]也将为(5, 5),因为实际po1和po2只是一个(Point[]类型)对象的两个不同的名字(引用)而已;而上面那种,po1[0]不变。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询