List使用总结

本文深入探讨了Java集合List中的对象引用原理,解释了如何通过List修改对象内部状态而不影响其在内存中的地址,以及在开发过程中遇到的常见问题。文章详细解析了List作为数组底层实现的特性,以及对对象引用的操作机制,帮助开发者更好地理解和应用Java集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 今天在开发过程中,用到List集合。在使用过程中,获取其中某个对象,并对对象的属性值进行修改,虽然没有将修改后对象add回去,然而list中的该对象值还是修改了。以前没注意过这个问题现在做个总结:

 理解1:  List属于java集合,Java集合中不能存放基本类型数据,只能存放对象的引用,即对象在内存中的地址,你把某个对象的引用存放到List中,相当于你把某街道某栋楼某房间号(比如说,海淀区上地环岛东金隅嘉华E座2层301)告诉了快递员,快递员会记住这个地址,而这个在地址办公的人或单位走了以后,这个地址还是有效的,然后快递员再来这个地址就会跟新来的办公的人接触,打交道。

深入理解:ArrayList的底层数据结构是数组,它存放的是元素的地址。ArrayList的元素有角标,对元素的操作本质上跟数组的一样。list.add(p)是将Person对象p的地址存入了数组,p一旦被初始化后他的地址就不会改变了,并在内存中开辟一段空间用于存放自己内部的数据。当你修改了p对象内部的内容时,只是修改p内部存放的内容,并没有修改p的地址,list存放的地址也没变,当你从list中读取p的时候,系统会去读取list中存储的指向对象p的那段地址空间里的内容,即p对象修改后的内容。也就是说还是p对象那段内存空间,只是里边的内容变了,所以读取p的时候是修改后的内容。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值