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

© 人心如水 中级黑马   /  2014-7-13 13:38  /  1073 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.ArrayList;
        class Data {
            int val;
        }
        public class Test {
                  public static void main(String args[]) {
                           Data data = new Data();
                           ArrayList<Data> list = new ArrayList<Data>();
                   for (int i = 100; i < 103; i++) {
                           data.val = i;
                           list.add(data);
                   }
                    for (Data d : list) {
                          System.out.println(d.val);
                   }
             }
      }

4 个回复

正序浏览

求仔细分析一下开始的结果怎么都是一样,这个赋值过程脑袋一直转不过来
回复 使用道具 举报
  1. public class Test
  2. {
  3.     public static void main(String[] args)
  4.                 {
  5.                   // Data data = new Data();
  6.                            ArrayList<Data> list = new ArrayList<Data>();
  7.                    for (int i = 100; i < 103; i++) {
  8.                            
  9.                            list.add(new Data(i));
  10.                    }
  11.                     for (Data d : list) {
  12.                           System.out.println(d.val);
  13.                    }
  14.         }
  15. }
  16. class Data
  17. {
  18.         Data(int i)
  19.         {
  20.                 val = i;
  21.         }
  22.      int val;
  23. }
复制代码


OUT:
100
101
102
你应该是想要这个结果吧
回复 使用道具 举报
因为你只有一个对象data, 你的容器里面存储的全是这一个对象的引用,你可以看成你一改变VAL就改变了所有VAL的值。
回复 使用道具 举报
结果是怎样?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马