关于遍历 赋值,有个疑问

霖vv 发布于 2011/06/03 16:21
阅读 451
收藏 0

    List list = new ArrayList(); 

while(rs.next()){
    News news = new News();
    news.setId(rs.getInt(1));
    news.setTitle(rs.getString(2));
    news.setMsg(rs.getString(3));
    news.setCreattime(rs.getTimestamp(4));
    list.add(news);
   }

上边的遍历,把news赋值后装到list里。

如果改成

List list = new ArrayList(); 

  News news = new News();

while(rs.next()){
      news.setId(rs.getInt(1));
    news.setTitle(rs.getString(2));
    news.setMsg(rs.getString(3));
    news.setCreattime(rs.getTimestamp(4));
    list.add(news);
   } 

如果把 news对象的创建放到while 循环前,为什么 list里的news都是第一个装入的news的值呢

加载中
1
ddatsh
ddatsh

new news()在while上,对象不就一个嘛

遍历RS,多条记录,但SET的是同一个对象的属性

把这个对象属性改来改去N次。。

1
l
ling.

new news()相当于把你之前的news内容清空

放在while循环中就等于每读取一条数据就清空一次原本的news,

这样就能把后面的内容装进news中.

这就是为什么List list = new ArrayList();要放在while循坏之外,

因为如果放在循环内,list会随着循环的执行而清空.

1
保罗的寓言
ddatsh
ddatsh
这图。。。。
0
霖vv
霖vv
局部变量news 不能用set()方法对其成员变量重新赋值?
找寻
找寻
当然可以,但是你一直对同一个引用对象进行修改,当然add进来永远是一个对象
0
l
ling.
必须重新实例一个对象..
0
保罗的寓言
保罗的寓言

同时纠正“为什么 list里的news都是第一个装入的news的值呢” 不是第一次的值,而是news对象的最终值。。

返回顶部
顶部