黑马程序员技术交流社区

标题: 黑马程序员 求大神分析步骤,结果运行知道了!!技术分 [打印本页]

作者: 北极雪871208    时间: 2014-3-29 12:46
标题: 黑马程序员 求大神分析步骤,结果运行知道了!!技术分
---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------

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);
                   }
             }
      }

---------------------- <a target="blank">ASP.Net+Unity开发</a>、<a target="blank">.Net培训</a>、期待与您交流! ----------------------

作者: 北极雪871208    时间: 2014-3-29 12:47
版主多给点技术分a !!
作者: 黄晓鑫    时间: 2014-3-29 12:47
package com.itheima;

import java.util.ArrayList;
import java.util.List;

@SuppressWarnings("unused")
class Data {
        int val;
}
public class Test2 {
        public static void main(String args[]) {
                Data data = new Data();//对象实例化
                ArrayList<Data> list = new ArrayList<Data>();//存储Data对象的集合
                //List<Integer> list = new ArrayList<Integer>();//存储Integer对象的集合

                for (int i = 100; i < 103; i++) {//for循环嵌套,外循环
                        data.val = i;//100-->101-->102
                        list.add(data);//把data对象引用存储进集合
                        /*for (Data d : list) {//增强for循环嵌套(Foreach),内循环,对list集合进行遍历
                                //System.out.println(list.size());
                                System.out.println(d.val);//打印data对象的val值
                                //第一次size为1
                                //存储的也是1个元素,打印一个元素---100
                                //第二次size为2
                                //存储的也是2个元素,打印二个元素--->101--->101
                                //第三次size为3
                                //存储的也是3个元素,打印三个元素--->102--->102--->102
                        }*/
                }
               
                for (Data d : list) {//增强for循环(Foreach),对list集合进行遍历
                        System.out.println(d.val);//打印data对象的val值
                        //由于上面for循环对data对象的val进行赋值,最后一次给data对象的val赋值的是102.
                        //System.out.println(list.size());
                        //所以这里打印102.而集合的长度为3.打印了3次102
                }
               
                /*for(Data d:list){//增强for循环(Foreach),对list集合进行遍历
                        System.out.println(d);//打印data对象的引用,因为集合存储的是对象的引用
                }*/
               
                /*for(int i =100;i<103;i++){//for循环嵌套,外循环
                        data.val = i;//把i值赋值给对象的val
                        list.add(data.val);//把data对象赋值完毕的val值存储进Integer类型集合
                        for (Integer val : list) {//增强for循环嵌套(Foreach),内循环,对list集合进行遍历
                                System.out.println(val);//打印存储进集合的val值
                                //由于上面for循环对data对象的val进行赋值,也将val值存储进集合,
                                                        //所以打印--->100
                                                        //--->100--->101
                                                        //--->100-->101---102
                                //System.out.println(list.size());
                        }
                }*/
               
                /*for(Integer val : list){//增强for循环(Foreach),对list集合进行遍历
                          System.out.println(list.size());
                        System.out.println(val);//打印存储进集合的val值100-->101-->102
                }*/
               
        }
}

作者: yanzhendong    时间: 2014-3-29 12:54
你只有一个data对象,虽然往list里添加了3次而且添加成功,但list里的三个元素指向了同一个对象,所以输出的时候值都是一样的即data对象里的值,改成这样就行了for(int i=00;i<103;i++{Data data=new Data();data.val=i;list.add(data);}
作者: 北极雪871208    时间: 2014-3-29 13:19
黄晓鑫 发表于 2014-3-29 12:47
package com.itheima;

import java.util.ArrayList;

真详细!多谢!         
作者: 黄晓鑫    时间: 2014-3-29 13:31
你都说详细了,怪不得我入学测试满分




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