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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

---------------------- <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>、期待与您交流! ----------------------

6 个回复

倒序浏览
版主多给点技术分a !!
回复 使用道具 举报
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
                }*/
               
        }
}

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

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

import java.util.ArrayList;

真详细!多谢!         
回复 使用道具 举报
你都说详细了,怪不得我入学测试满分
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马