这里定义了一个类有这些变量
运行:
这边接收arraylist
但是arraylist的数据就有问题了,全是最后一次插入的数据
这个问题困扰了很久求解答
**对象在for循环内创建才行。Utils utils=new Utils();放在循环内 **
因为对象是引用数据类型,所以每次循环都需要创建新对象才行。
因为你untils只new了一次啊,所以不管插入几次,都指向同一个实例
你每次都要new一个新的,这样,list里才是每个不同的数据,要不然就是反复对同一个对象赋值,把Utils utils = new Utils();放到for循环里面
Utils utils=new Utils();需要方法for循环里面的一开始,每次循环初始化,否则utls的值是循环最后一次的值
java特性之一基于对象。从底层来讲你要理解java的存储机制。实际上你在List里添加的数据,并不是把数据添加进去,而是添加了对象的内存地址引用。因此你在循环里面每次修改值,都是对象的值进行修改,但是list引用的地址是不变的。你在循环外生成的对象,在循环内不管怎么样修改值,都是同一个对象,地址引用时一致的。
以上是java很重要的特性