为什么把array2的定义定义放到循环的外头后出现这种情况

如果把array2的定义放到循环内就是正常了的,放在外面就会出现下面的情况
第一第二是不正常的,第三第四是正常的

img

img

img

img

因为如果放到了循环外面的话,每一次array2都是array1-1的长度,每次遍历完之后都会把array2赋值给array1,你的目的是让的长度再-1,但是你放到了外面do里面的语句执行的时候不会执行array2的长度-1,因为没有包含在循环里面,array2的定义就相当于是个全局变量。

跟你在哪里定义没关系
但是每次循环之前你需要重新new对象
否则它是个引用类型,你用arr1=arr2,其实就是把arr1的地址指向了arr2,那么你一共就只有一个array,永远在操作同一个array

因为你在循环外初始化,循环内修改了,下次循环还会保留上一次的内容;
放在循环内每次重新初始化一个新的,就不会影响