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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曹昌豪 中级黑马   /  2012-5-21 13:06  /  1598 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Data {
        int        val;
        int        getVal() {
                return val;
        }
        void        setVal(int val) {
                this.val = val;
        }
}

public class ListTest {

  public static void main(String argv[]) {
          Data data = new Data();
          ArrayList list = new ArrayList();

          for (int i=100; i<103; i++) {
            data.setVal(i);
            list.add(data);
          }

        int j = 0;
        while (j < list.size()) {
          Data tmp = (Data )list.get(j);
          System.out.println("list(" + j + ") = " + tmp.getVal());
          j++;
        }
  }
}
我想画图解释下,没画过呀,不知道怎么下手了都,哥们们给点意见哈,

2 个回复

倒序浏览
  1. package it.itcast.demo;

  2. import java.util.ArrayList;

  3. class Data {
  4.         int val;

  5.         int getVal() {
  6.                 return val;
  7.         }

  8.         void setVal(int val) {
  9.                 this.val = val;
  10.         }
  11. }

  12. public class ListTest {

  13.         public static void main(String argv[]) {
  14.                 Data data = new Data();
  15.                 ArrayList list = new ArrayList();

  16.                 for (int i = 100; i < 103; i++) {
  17.                         data.setVal(i);
  18.                         list.add(data);
  19.                 }

  20.                 int j = 0;
  21.                 while (j < list.size()) {
  22.                         Data tmp = (Data) list.get(j);
  23.                         System.out.println("list(" + j + ") = " + tmp.getVal());
  24.                         j++;
  25.                 }
  26.         }
  27. }
复制代码
1,你没有导包;
2,回答你的问题  ,这个好像没什么值得画图的吧,  j的值你已经规定好了 只能有三个   ,而且输出的内容也for循环也计算出结果了 ,所以最后三次输出的内容都是一样的,
3,输出的结果是:
list(0) = 102
list(1) = 102
list(2) = 102
回复 使用道具 举报
本帖最后由 李文富 于 2012-5-21 15:52 编辑

package cn.itcast.test;

import java.util.ArrayList;
class Data {
        int val;
        int getVal() {
            return val;
        }
        void setVal(int val) {
            this.val = val;
        }
}

public class ListTest {
        public static void main(String argv[]) {

                Data data = new Data();//创建一个Date类实例对象
                ArrayList list = new ArrayList();//创建一个ArrayList集合

                for (int i = 100; i < 103; i++) {
                        data.setVal(i);    //设置data对象Val为i值
                        list.add(data);   
                }                        
  
                int j = 0;
                while (j < list.size()) {   //打印 list中的data对象
                      Data tmp = (Data) list.get(j);
                     System.out.println("list(" + j + ") " +
                                "= " + tmp.getVal());
                     j++;
                }

        }

}

/*注意 你只是创建了一个data对象,list集合存放的是该对象的引用
* for循环中好像是每次调用 setVal(i)设置对象的 val值后存入list,其实
* 最终以最后一次赋值为对象的确定值 ,list只是三次引用了data对象。
* 故打印出的结果都是 102*/

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马