假如有一个Student类,有学号、姓名、年龄等属性,需要我们把一系列的Student对象通过手动输入的方式存入集合当中:
Student stu = new Student();
while(true) {
stu.setId(scanner.nextInt());
stu.setName(scanner.next());
stuList.add(stu);
}
显然,这个方法是行不通的。
尽管stu的属性被改变,每次stuList添加的对象似乎都有着不一样的属性,但是最终的结果只会是出现一系列相同的stu对象。没错,集合的添加,添加的并非是一个个的实例,而是这个实例所对应的引用地址。
我们用for(Student dt : stuList){
system.out.println(dt);
}
可以发现,这里打印的是相同的对象。
所以上面的代码应该改成:
Student stu;
while(true) {
stu = new Student();
stu.setId(scanner.nextInt());
stu.setName(scanner.next());
stuList.add(stu);
}
这样stu每次都指向了不同的对象,每次添加的引用也是不一样的。
网友评论