java ArrayList add()方法数据被覆盖问题,arraylistadd
分享于 点击 9536 次 点评:200
java ArrayList add()方法数据被覆盖问题,arraylistadd
今天学习jdbc时,将从数据库取出来的数据存入ArrayList集合中时出现了一点小问题
List<User> users=new ArrayList();
User user=new User();
while(rs.next()){
user.setNo(rs.getInt("no"));
user.setName(rs.getString("name"));
user.setAge(rs.getInt("age"));
users.add(user);
System.out.println(user.getAge());
}
for (User u : users) {
System.out.println(u.getAge());
}
在输出时发现输出的数据都是最后一条,前面的数据完全被覆盖,解决这个问题很简单就是把User user = new User();这一句代码放进while循环内.为什么会出现这样的情况呢?原因在于ArrayList的add()方法添加的是对象的引用,如果上述一行代码在while循环外面,那么创建的对象引用始终只有一个,而while循环内一直在改变对象的各个变量,直至while循环结束,而添加进入users的引用始终是不变。而如果将上述一句代码放入while循环内,则相当于每次循环都创建了一个对象引用,并且指向当次循环的对象,users各对象引用指向的对象变量值都是不同的.
相关文章
- 暂无相关文章
用户点评