while (rs.next()) { DbList dbList = new DbList(); dbList.setAppLicationname(rs.getString("A_APPLICATION_INSTANCENAME")); dbList.setGlobalid(rs.getString("A_GLOBAL_ID")); dbList.setIpAddres(rs.getString("IP_ADDRESS")); dbList.setDataname(rs.getString("A_ROOT_CLASS")); list.add(dbList); }
我把DbList dbList = new DbList();
放到while循环中打印出来的数据值得都不一样,
可是我把它放到while外面都一样这是怎么回事?
都不是网list集合里放了嘛?
1、放到外边相当于 你仅创建了一个对象
2、每次循环都修改同一个对象
3、每天添加到list的对象都是同一个引用
即list中的内容是一样的
在里面的时候每次都加的是一个新的对象,放外面的时候加的只有一个对象,只是不断对他进行重新设值而已
放在里面每次循环的时候都是创建新的对象,每个新的对象都放到list里,放到外面是一个对象,每次你都在设置同一个对象
以上3人说的都对,这需要对内存中如何分配了解才行。可以画画内存图分析下就明白了