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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java陈辉 中级黑马   /  2013-12-7 22:13  /  899 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 java陈辉 于 2013-12-9 20:05 编辑

public void test7(){
       public static void main(String[] args){
        int arr[]={3};
       for(int i:arr){
       i=10; }
      System.out.println(arr[0]);
   }
}
上面代码中arr[0]为什么等于3,而不是等于10,for循环没有改变数组里面的值?求解。

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

5 个回复

倒序浏览
for(int i:arr){
       i=10; }
这段代码定义的i只在 for循环中生效,而且他也没有改变int数组,所有System.out.println(arr[0]);,当然返回3.

这里涉及局部变量的范围,及增强for循环的特点。

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
楼主你在for循环中修改i的值,只是改变了变量的值,并没有改变数组的原始值,你想具体了解原因,我给你个连接说的很详细,正好讲到了这个知识点,
http://bbs.itheima.com/forum.php?mod=viewthread&tid=51712

其中在连接例子里面讲到Iterator接口下面的例子里的   book = "测试字符串"; 这一句代码和你说的是一个问题,你看了就清楚了

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
增强的for循环里面遍历i,i数字里面的值,但是i的作用域在for循环里面,所以下面两种方式都可以达到效果了public class Count {
        public static void main(String[] args) {
                   /*    int arr[]={3};
                       for(int i=0;i<arr.length;i++){
                               arr[i]=10;
                       }
                      System.out.println(arr[0]);*/
            int arr[]={3};
               for(int i:arr){
                       i=10;
                       System.out.println(i);
               }
        }
}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
1、
  1. int[] numArray = { 1, 2, 3, 4, 5, 6 };
  2.     for (int i=0; i < numArray.length; i++) {
  3.       System.out.print(numArray[i]);
  4.     }
复制代码


2、
  1. int[] numArray = { 1, 2, 3, 4, 5, 6 };
  2.     for (int i=0; i < numArray.length; i++) {
  3.       int j = numArray[i];// 这个j,就等价与1中的i,更改j的值不会影响数组元素值
  4.       System.out.println(j);
  5.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
for增强型循环,只是从数组中取出数据给了变量i,你修改的只是i的值,而原来的值当然也没有发生变化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马