(java)为什么输出结果都是一样的数值

publicclassTest{publicstaticvoidmain(Stringargs[]){Datadata=newData();ArrayList<Data>... 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);
}
}
}
展开
 我来答
yinzirunzhl
2013-12-05 · 超过21用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:48万
展开全部
原因是你这个里面只有一个Data对象,你每次给他在for循环里面赋值的时候,都在改变Data对象的属性val的值,所以,最后输出了102。你要是想输出不同的值,那么list里面add的应该是不同的Data对象。即把你的Data data = new Data()写在第一个for循环里面,这样每次list里面add的都是不同的Data对象。就和最快回答那哥们写的是一样的
liu013547
2013-12-05 · 超过18用户采纳过TA的回答
知道答主
回答量:123
采纳率:0%
帮助的人:55.8万
展开全部
因为data是一个对象 向list中存入的是data在内存中的路径 你在这里修改的都是同一个对象.也就是说你的list集合里面存的路径全部是一样地,修改的值也是同一个data对象.所以当你循环的时候 输出的也就是相同的值了!
要想输出的值不同 可以在循环里面获取data对象
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大志若愚_zz
2013-12-05 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:109万
展开全部
public class Test {
          public static void main(String args[]) {
                   ArrayList<Data> list = new ArrayList<Data>();

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

            for (Data d : list) {
                  System.out.println(d.val);
           }
     }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-05
展开全部
在这里面你的list里面add的是data...所以一直都是一个值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式