首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,
但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。
---------------------------------------
1 Circlelist[] tempArr = new Circlelist[radix]; 2 // for (Circlelist tempList : tempArr) { 3 // tempList = new Circlelist(); 4 // } 5 for (int l = 0; l < tempArr.length; l++) { 6 tempArr[l] = new Circlelist(); 7 }
为什么第一个增强for循环不能对tempArr数组的每个成员进行初始化,而第二个普通的for循环却可以?
增强for循环是只读操作。
相当于:
1 for (int i = 0; i < tempArr.length; i++) { 2 Circlelist tempList = tempArr[i]; //读取数组元素值放到一个临时变量中 3 ....... //其它代码,使用这个临时变量 4 }
并没有实际改变数组元素的值,所以无法完成初始化操作。
只是改变了circlelist变量的指向,并没有给tempArr[l] 赋值。