第一,不能修改的是foreach引用变量,因为它是引用的,对它的修改没有意义也没有作用,它就像一个c/c++指针那样对集合中的元素进行指向引用;我们能通过引用看到它,但是没有能力动它。
第二,in之前的变量是引用变量,但in之后的集合确是实实在在的,所以可以对它操作,像.ADD();REMOVE()等方法可以使用。
第三,foreach引用变量大概是通过地址指向后面的集合当修改了集合的元素时,地址可能发生某种改变,所以不跳出循环继续遍历时,就可能出现引用找不到的情况。
某些情况不合适用foreach
1.只读:访问的元素不能被赋值,比如元素的自增等
2.单一结构:不可能同时遍历两个结构,比如比较两个数组
3.单一元素:只适合单一的元素读取
4.单向:只能向前单个元素的迭代
5.需java5支持:不要在java5前使用该语法 |