我还是说一下吧,List集合保存的是元素的引用,而不是元素的实例,
Data data = new Data();是实例化一个Data对象,这个对象保存在堆内存中,其中字段val也保存在堆内存中和data对象同存亡
在List添加data对象之前只是修改了data对象的val字段的值,但是并没有重新实例化对象
所以在循环中List添加的都是同一个引用,
在退出第一个循环的时候,对这个对象的val字段进行了最后一次赋值为102
因为List添加的是同一个引用,所以在打印结果的时候,打印的也是同一个引用的最后一次被修改的值.
最后一次赋值的是102,所以三次打印的结果都是102 |