ArrayList的add Arraylist,为什么加出来的效果跟逻辑效果不一样

for(int i = 0; i<10;i++){
array1.add(i);
array2.add(array1);
}
结果输出的array2里面的array1 都是从0-9的数字,一共9个,,,问题出在哪里

array1只有一个,你第一次循环的时候,array1里面有一个0,array2里面有一个array1,第二次循环的时候array1里面是0和1,array2里面是两个array1,
.....依次循环,至始至终,都只有一个array1,array1的地址一直都没有变化,变化的只是array1的内容当你取出array2里面的内容的时候,每一个array1都是相等的,你想的应该是要输出0-9,其实不是这样。你应该这样写:
for(int i = 0; i<10;i++){
ArrayList array1=new ArraList();
array1.add(i);
array2.add(array1);
}
每次循环都创建一个新的ArraList

thank you 第一次遇到这问题, 长见识了

其实我是想输出{{0},{0,1},{0,1,2}`````````,,但是问题是一样的,就是array1是一样的,,我应该转存一下,

引用传递,和值没有关系