分析运行结果,说明原理。(没有分析结果不得分)
import java.util.ArrayList;
class Data {
int val;
}
public class Test {
public static void main(String args[]) {
Data data = new Data();
ArrayList list = new ArrayList();
for (int i = 100; i < 103; i++) {
data.val = i;
list.add(data);
}
for (Data d : list) {
System.out.println(d.val);
}
}
import java.util.ArrayList;
class Data {
int val;
}
public class Test {
public static void main(String args[]) {
Data data = new Data();
ArrayList list = new ArrayList();
for (int i = 100; i < 103; i++) {
data.val = i;
list.add(data);
}
for (Data d : list) {
System.out.println(d.val);
}
}
}
package com.itheima;
import java.util.ArrayList;
/*
第4题:import java.util.ArrayList;
//这个是一个日期类
class Data {
int val;
}
//测试类
public class Test4 {
public static void main(String args[]) {
// 使用创建日期类对象
Data data = new Data();
// 创建一个集合对象
// 错误代码,没有指定这个集合存储的数据类型,不指定,默认是object类型,这样不利于我们操作
// ArrayList list = new ArrayList();
ArrayList<Data> list = new ArrayList();
// 通过循环对这个集合进行赋值
for (int i = 100; i < 103; i++) {
// 把变量i赋值个对象中的vla成员变量
data.val = i;
// 把对象添加到集合中,因为data里面的成员变量是一个int型的数据类型
// 所以每次使用data.val值都会加1,而我们new的只是一个data对象,只有一个内存地址
// 每次集合存储的地址都是一样的,
list.add(data);
}
for (Data d : list) {
// 输出这个成员变量的值
// 102
// 102
// 102
// 这里不能引用通过集合来引用这个对象中的值,调用对象的值只能通过对象名调用
System.out.println(d.val);
}
}
}
下面是我修改后的程序:
*/
//这个是一个日期类
class Data {
int val;
}
//测试类
public class Test4 {
public static void main(String args[]) {
// 使用创建日期类对象
Data data = new Data();
// 创建一个集合对象
// 修改代码、
// ArrayList list = new ArrayList();
ArrayList<Data> list = new ArrayList();
// 通过循环对这个集合进行赋值
for (int i = 100; i < 103; i++) {
// 把变量i赋值个对象中的vla成员变量
data.val = i;
// 把对象添加到集合中,
list.add(data);
}
for (Data d : list) {
// 输出这个成员变量的值
System.out.println(d.val);
}
}
}