帮忙分析一个java小程序

1、分析运行结果,说明原理。最好能帮忙画下内存,谢谢!importjava.util.ArrayList;classData{intval;}publicclassTes... 1、 分析运行结果,说明原理。最好能帮忙画下内存,谢谢!
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);
}
}
}
展开
 我来答
popch123
2013-08-14
知道答主
回答量:33
采纳率:0%
帮助的人:20.9万
展开全部
因为你在for循环外面创建了一个对象,所以你在list里面始终只添加了一个对象,你for循环改变的val值始终都是同一个对象的,所以输出的都是以最后一次改变的val值为准,如果你吧对象在for循环里面创建出来就会得到3个对象和3个不同的val值
Leo分享
2013-08-14 · TA获得超过754个赞
知道小有建树答主
回答量:1405
采纳率:0%
帮助的人:764万
展开全部
java程序为什么要画内存
做java不需要了解内存的知识
不过你这个list里面的内容都是一样的
list里面放的是同一个对象
Data data = new Data();
所以最后打印的时候全都是102
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式