黑马程序员技术交流社区
标题:
执行流程求答
[打印本页]
作者:
曹昌豪
时间:
2012-5-21 13:06
标题:
执行流程求答
class 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++;
}
}
}
我想画图解释下,没画过呀,不知道怎么下手了都,哥们们给点意见哈,
作者:
Fc10232
时间:
2012-5-21 13:46
package it.itcast.demo;
import java.util.ArrayList;
class 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++;
}
}
}
复制代码
1,你没有导包;
2,回答你的问题 ,这个好像没什么值得画图的吧, j的值你已经规定好了 只能有三个 ,而且输出的内容也for循环也计算出结果了 ,所以最后三次输出的内容都是一样的,
3,输出的结果是:
list(0) = 102
list(1) = 102
list(2) = 102
作者:
李文富
时间:
2012-5-21 15:51
本帖最后由 李文富 于 2012-5-21 15:52 编辑
package cn.itcast.test;
import java.util.ArrayList;
class 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();//创建一个Date类实例对象
ArrayList list = new ArrayList();//创建一个ArrayList集合
for (int i = 100; i < 103; i++) {
data.setVal(i); //设置data对象Val为i值
list.add(data);
}
int j = 0;
while (j < list.size()) { //打印 list中的data对象
Data tmp = (Data) list.get(j);
System.out.println("list(" + j + ") " +
"= " + tmp.getVal());
j++;
}
}
}
/*注意 你只是创建了一个data对象,list集合存放的是该对象的引用
* for循环中好像是每次调用 setVal(i)设置对象的 val值后存入list,其实
* 最终以最后一次赋值为对象的确定值 ,list只是三次引用了data对象。
* 故打印出的结果都是 102*/
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2