相关文章推荐
失恋的领带  ·  如何替换spring ...·  1 周前    · 
失恋的领带  ·  Unicode标准字符集中 ...·  10 月前    · 
失恋的领带  ·  android - "Error: ...·  10 月前    · 
失恋的领带  ·  Create index if not ...·  1 年前    · 
爱看球的伤疤  ·  Jetlinks - ...·  2 小时前    · 
打篮球的领带  ·  sklearn.manifold.Local ...·  2 小时前    · 

foreach循环迭代数组元素时,不能改变数组元素的值,因此,不要对foreach的循环变量进行赋值”。基本类型数组,不可改变。引用类型数组(除String类型),可以改变。

1 对象
foreach可以改变对象的值,但不能删除或添加对象 (foreach循环中,是把容器中的数据交给了那个element,当容器中装的是对象时,对象的赋值(赋的是引用,即给的是原对象所在的地址))
为什么不能删除或者添加变量,因为每次进入foreach是,就会调用java.util.LinkedList.Listltr.next()方法,方法对集合的长度进行了判断,所以会出现异常。
2 变量
foreach不可以改变变量,即使用集合存变量也不可以 (foreach循环中,是把容器中的数据交给了那个element,当容器中装的是变量时,foreach是改变不了元数据的,想改变只能通过for循环)。

代码如下: Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用 foreach 遍历 foreach (PropertyInfo pi in t.GetProperties())     object value1 = pi.GetValue(tc, null));//用pi.GetValue获得值     string name = pi.Name;//获得属性的名字,后面就可以根据名字判断来 For循环为什么 不能 对集合进行 删除 操作 当我们对一个List进行 遍历 删除 时我们会发现它会给我们报ConcurrentModificationException异常,那它背后是什么机制呢??? 这是因为 forEach 里的Iterator迭代 对象 是工作在一个独立的线程中的,并且会拥有一个mutex的锁,所以Iterator在被创建之后呢,会建立一个指向原来 对象 的单链索引表,当原来的 对象 数量发生变化时,也就是我们的这个集合发生变化的时候呢,这个索引表的内容。是不会同步去改变的; 所以,当索引指针往后移动的时 foreach 循环 foreach 循环是计算机编程语言中的一种控制流程语句,通常用来循环 遍历 数组或集合中的元素。 Java 语言从JDK 1.5.0开始引入 foreach 循环,在 遍历 数组、集合方面, foreach 为开发人员提供了极大的方便,通常也被称之为增强for循环。 foreach 语法格式如下: for(元... 问题: foreach 语句到底可不可以改变所 遍历 容器(数组与集合)的值?我先说个答案:可以改变 对象 的值,但是 不能 删除 或添加 对象 ,也不可以改变变量(比如int a)的值,就算用集合存变量依旧 不能 。概述:我在书上看到的是这句话:当需要以其他顺序 遍历 数组或改变数组中的元素时,还是必须使用下标变量。它仅仅表示的数组中不可以改变,我测试了一下,确实如此:代码表示:import java .util.*; ... ???? Java 学习路线:搬砖工的 Java 学习路线 ???? 作者微信公众号:程序员小王 ???? 程序员小王的博客:https://www.wolai.com/wnaghengjie/ahNwvAUPG2Hb1Sy7Z8waaF ???? 扫描主页左侧二维码,加我微信 一起学习、一起进步 ???? 欢迎点赞 ???? 收藏 ⭐留言 ???? 一、 foreach 遍历 ArrayList过程中使用 add 和 remove foreach 遍历 Ar 一、快速失败    在使用迭代器对集合 对象 进行 遍历 的时候,如果A线程对集合进行 遍历 ,正好B线程对集合进行 修改 (增加、 删除 修改 )则A线程会抛出ConcurrentModificationException异常。原理是:    迭代器在 遍历 时直接访问集合中的内容,并且在 遍历 过程中使用一个 modCount 变量。集合在被 遍历 期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashN... var list=[ {name:"", jsond:"jetext:'aaaa'", id:""}, {name:"", jsond:"jetext:'aaaa'", id:""}, list. forEach (function(item,index){ item.jsond = JSON.parse(item.jsond);; //可直接改变list; 首先抛出结论:如果 foreach 循环操作的数据的类型是普通数据类型,则在 foreach 修改 数组内容无效;如果 foreach 循环操作的数据类型是引用类型,则 修改 数组内容有效。(建议: foreach 只用于 遍历 ,需要操作数组时直接使用传统的for循环较好) 接下来举例子说明: (1) foreach 循环操作的数据类型是普通数据类型: String[] str1 = { "a", "b", "c... 相信各位程序猿在开发的过程中都用过 foreach 循环,简单快捷的 遍历 集合或者数组,但是在通过 foreach 进行集合操作的时候就不可以了,这是为什么?这里先把问题提出来,接着往下看。
 
推荐文章