java list.get(position)返回的是一个新的对象还是地址?
    假设有一个类 class A;有一个集合List<A> list;集合里面存放了很多A;
    这时新建了一个A a =  list.get(5);这个a和list.get(5)是同一个对象吗?

2个回答

这就好比
Object o1 = new Object();
Object o2 = o1;
此时要问,o1和o2的内存地址是不是一样的。
首先,o1、o2并不是对象,只是变量,它们共同指向了创建出来的Object对象。
它们表示的是同一个对象。

其次,hashcode方法返回的并不是对象的地址,它返回的是对象的散列码,查看Object类的hashcode方法注释可以知道,hashcode的最典型的实现
就是通过地址转化成一个int类型的值,所以开发者可以通过hashcode判断两个对象的内存地址是不是相等,而不能把hashcode就当成对象的内存地址。
不过这并不是唯一的实现方式,开发者也可以自己重写这个方法。
对象的地址是可变的,在java中存在垃圾回收策略,对象会从内存的一个区域移动到另外一个区域,比如从新生代移动到老年代。

get(position)是按照list中元素的索引进行取值的,如果取得是同一个position的值 当然两个对象是相等的

u012934325
小李学习笔记和踩坑总结 回复下课睡觉: 自己比较一下两个对象的hashcode就行啊
3 年多之前 回复
qq_35071078
下课睡觉 不是,我是想问两个对象的地址是不是相同的?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问