A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Camwly 中级黑马   /  2015-11-29 13:22  /  905 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void main(String[] args){
                int[] arr=new int[]{1,2,3};
                for (int i : arr) {
                        //每个元素赋值为5
                        i=5;
                }
                for (int i : arr) {
                        System.out.println(i);
                }
                }
为什么输出的结果还是1 2 3呢,我明明把每个元素都赋值为5了。

8 个回复

倒序浏览
增强for循环只能获取元素,不能对其中的元素进行修改,
我的理解是相当于下面这样
for(int x=0;x<arr.length;x++){
     int y=arr[x];//y即相当于i
     y=5;
}
回复 使用道具 举报
你在增强for循环的时候,定义了int变量i,你把5赋值给i,跟数组元素没有直接关系,增强for循环只是将数组元素读取而已,要改变元素的值,需要数组名[下标]这种方式。
回复 使用道具 举报
foreach 循环中的迭代变量不是集合元素本身,系统只是单纯依次把集合元素的值赋给迭代变量,因此在foreach循环中修改迭代变量没有实际意义。  简单说你的i就是在foreach循环里的局部变量,出去就没意义,改变不了集合元素值。

当使用foreach 循环来迭代访问集合元素时,该集合不能被改变,否则将会引发ConcurrentModificationException异常。
回复 使用道具 举报
你还是回去,仔细去看看增强for的使用,上面的人都告诉你了.学习要认真
回复 使用道具 举报
i是中间变量,并不是数组的变量
回复 使用道具 举报
Camwly 中级黑马 2015-11-29 23:15:14
7#
谢谢楼上各位大神
回复 使用道具 举报
不明白  顶一下
回复 使用道具 举报
发现我不会啊。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马