java ArrayList add()方法数据被覆盖问题

来源:互联网 发布:calendar什么软件 编辑:程序博客网 时间:2024/05/16 19:11

今天学习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各对象引用指向的对象变量值都是不同的.                                             
1 0
原创粉丝点击