黑马程序员技术交流社区

标题: 执行ListTest.main的结果是什么?(此题需写出分析过程, [打印本页]

作者: 张强+    时间: 2011-10-18 01:04
标题: 执行ListTest.main的结果是什么?(此题需写出分析过程,
lass 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++;
        }
  }
}

作者: 张奇云    时间: 2011-10-18 13:08
结果是:
list(0) = 102
list(1) = 102
list(2) = 102
如果这不是你想要的结果,那是因为你只new了一个Data对象,
试试把Data data = new Data();放在for循环里面,这样可得到结果:
list(0) = 100
list(1) = 101
list(2) = 102



作者: 张振宁    时间: 2011-10-18 16:40
class Data {//创建一个data类
        int        val;
//data类的 get set 方法   两个方法都不标准   public int 方法公共 这里没设置
        int        getVal() {
                return val;
        }
        void      setVal(int val) {
                this.val = val;
        }
}

public class ListTest {//创建个 listTest类

  public static void main(String argv[]) {//listTest的主函数
          Data data = new Data();    //创建一个data类对象

          ArrayList list = new ArrayList();//创建一个arraylist对象

          for (int i=100; i<103; i++) {//此循环三次  100  101 102
            data.setVal(i);                 //给data类对象赋值   data对象找不到 setVal 方法
            list.add(data);                 //给list对象添加一个元素
     }

        int j = 0;
        while (j < list.size()) {
                  Data tmp = (Data )list.get(j);        
                  System.out.println("list(" + j + ") = " + tmp.getVal());           //这里也一样   Data类对象  tmp找不到 getVal 方法
                 j++;
        }
  }
}
所以程序最终不能运行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2