Java中将对象加入集合,实质是加入对象的引用的复制
来源:互联网 发布:阿里云邮箱个人版注册 编辑:程序博客网 时间:2024/06/03 17:41
在Java中,我们经常使用封装好的集合框架(如List),下面看一个例子。
import java.util.*;public class Test { public static void main(String[] args) { List<Date> list = new ArrayList<Date>(); Date date = new Date(); date.setTime(10000); System.out.println(date.toString());//打印 list.add(date);//将设置过的Date类对象date添加入list集合 date.setTime(30000);//重新设置date对象的时间属性 System.out.println(list.get(0).toString());//打印 }}结果是这样的:
这说明了一个问题,虽然我们把date对象加入进了list集合,之后再更改list内的时间属性,但是再打印list对象内的date属性的时间值,发现变化了。
其实,我们add入list集合的是date对象的引用的复制品,而不是date对象本身,date对象本身在虚拟机内只存在一份,引用和引用复制品指向的都是同一个date对象,所以通过一个引用更改date对象的属性,是可以导致引用复制品指向的对象属性也变化的。
但是,注意了,如果我们这样做来代替重新setTime:
date = new Date();集合list中的date是不会变的,因为这使得date引用了一个新的Date类对象,不会影响list中的复制品。
这与java方法传参的原理是一样的。
下面看一副能帮助理解的图:
1 0
- Java中将对象加入集合,实质是加入对象的引用的复制
- 建立对象的实质
- 集合存放的是对象还是对象引用?
- 关于java的ArraryList中赋值——不是复制,需要new新的对象,才能加入
- java String对象是“引用”传递的
- Java集合对象的深度复制与普通复制
- 添加一个对象到集合中时,集合里面存放的是对象的引用
- 面向对象编程的实质
- java对象的复制
- java对象的复制
- JAVA的对象复制
- java对象的复制
- java对象的复制
- java对象的复制
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- 添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?
- java传对象是传的是引用
- python re正则及os命令使用的一个小例子
- centos 6.8 部署本地作为PXE服务器
- ZooKeeper 原理及其在 Hadoop 和 HBase 中的应用
- Linux系统启动过程分析(基于CentOS 6.0系统)
- 数据库SQL 优化方案
- Java中将对象加入集合,实质是加入对象的引用的复制
- 浅谈cookie跨域的解决方案——document.domain
- iOS开发- 微信支付
- Spring Boot 入门
- c++ 从文件获取输入
- POJ-1018
- 素数距离问题
- JavaScript、JQuery-数组
- 小伙的java之旅——注解