java数组的一道问题

老师说:之所以修改po2的值会影响po1的值,是因为是复制了对象数组的一个引用,所以对于数组1和数组2所表示的对象都是生成在同一个内存中的,但是我打出来看并不是同一个地址... 老师说:之所以修改po2的值会影响po1的值,是因为是复制了对象数组的一个引用,所以对于数组1和数组2所表示的对象都是生成在同一个内存中的,但是我打出来看并不是同一个地址(po1!= po2)啊,这个是怎么一回事呢,还是我的那个地方的概念理解混了呢,请老师们指点下。 展开
 我来答
Silin_Silin
2014-09-20 · TA获得超过470个赞
知道小有建树答主
回答量:303
采纳率:50%
帮助的人:385万
展开全部

你现在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]不变。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式