对象在循环内,运行的结果都不同
对象在循环外,运行的结果都相同
为什么会这样呢,首先,我们要知道集合里添加的是地址,不是值,说明集合里添加的所有地址指向的都是同一块内存空间地址,这块空间地址的每一次值的改变,导致集合里存储的所有地址的值每次都在改变,所以最后只会显示这块空间里最后一次改变的值
画图解析一下(对象在循环内)
从始至终都是集合添加的都是同一个对象,对象的值改变了,所以集合添加所有的地址里的空间的值都改变了
对象在集合内
每次循环循环结束后,对象被销毁,但它创建的内存空间被集合添加(指向)了,所以内存不会被垃圾回收,而第二次循环创建的对象又创建了一块新的内存地址,集合再次添加的对象是第二个创建的内存地址