欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

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

来源: javaer 分享于  点击 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各对象引用指向的对象变量值都是不同的.
            
                
	

相关文章

    暂无相关文章

用户点评