1.在while循环的外面
public List<CollectionBean> list() {
String sql = "select * from collectiontbl";
Connection conn = JDBC_Connection.getConnection();
Statement stmt = null;
ResultSet rs = null;
List<CollectionBean> list = new ArrayList<CollectionBean>();
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
CollectionBean bean = new CollectionBean();
while (rs.next()) {
//不能再while外面创建这个对象,这是一个非常有技术含量的问题
bean.setId(rs.getInt("id"));
bean.setName(rs.getString("name"));
bean.setName(rs.getString("url"));
list.add(bean);
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getId()+" "+list.get(i).getName());
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBC_Connection.free(rs, conn, stmt);
}
return null;
}
运行结果:
1 www.dkfj.com
2 www.dkfj.com
3 www.dkfj.com
4 www.dkfj.com
5 www.dkfj.com
6 www.dkfj.com
原因解释:
我们注意到这个结果显然不是我们想要的,因为创建了一个对象在while循环外面,每循环一次创建的对象都没有变,改变的只是在栈上的值,而添加到list里的对象都指向到还存在的这个对象的栈上。当最后对象消失的时候,list里所有的对象才把栈上的值copy起走,所以打印的结果全部是一样的。所以我们需要把创建对象放在while循环内。
下面是详细的图解:
1.在while循环的里面
public List<CollectionBean> list() {
String sql = "select * from collectiontbl";
Connection conn = JDBC_Connection.getConnection();
Statement stmt = null;
ResultSet rs = null;
List<CollectionBean> list = new ArrayList<CollectionBean>();
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
//不能再while外面创建这个对象,这是一个非常有技术含量的问题
CollectionBean bean = new CollectionBean();
bean.setId(rs.getInt("id"));
bean.setName(rs.getString("name"));
bean.setName(rs.getString("url"));
list.add(bean);
}
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getId()+" "+list.get(i).getName());
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBC_Connection.free(rs, conn, stmt);
}
return null;
}
运行结果:
1 www.baidu.com
2 www.google.com
3 www.google.com
4 www.javaeye
5 www.javaeye
6 www.dkfj.com
原因解释:
分享到:
相关推荐
在这个"7.1 while循环"项目中,我们将深入探讨`while`循环的工作原理、语法结构以及如何在实际编程任务中运用它。 `while`循环的基本语法格式如下: ```python while condition: # 当条件为真时,执行这里的代码 ...
在C#编程中,`while`循环是一种条件循环,它会持续执行循环体内的代码直到指定的条件不再满足。在这个特定的任务中,用户通过文本框输入一个整数`n`,然后点击按钮启动筛选过程。程序会从3开始遍历到`n`,判断每个...
`while True:`并不禁止,而是常用于创建无限循环。 综上所述,循环在Python编程中扮演着至关重要的角色,理解并掌握各种循环结构、`break`和`continue`语句的用法,以及它们与`else`子句的配合,能够帮助我们编写...
例如,在 eg1 中,我们使用了 while 循环和 if 语句来输出指定的字符串。在 eg2 中,我们使用了 if 语句和 while 循环来判定手机号码的合法性。 对象和构造器是 Java 程序设计中两个基本概念,了解它们对于 Java ...
与for循环不同,while循环的次数不确定,取决于条件的满足情况。若条件始终为真,不加控制的话,就会导致无限循环。 另外,`break`语句用于提前退出最近的循环,而`continue`语句可以跳过当前循环的剩余部分,直接...
主要讲JS初级入门 从不懂到易懂得的过程 其中由for循环 while循环 if else的如何应用知识点 , 字符串的类型 数组创建 对象的概念 DOM对象 以及随机抽人事件 如何获取验证码等简单项目
### Python中for循环和while循环的基本使用方法 在Python编程语言中,循环结构是不可或缺的一部分,主要用于重复执行一段代码直到满足特定条件为止。本文将详细介绍Python中两种最常用的循环结构——`for`循环和`...
由于线程A和线程B持有的锁不同,线程B可以顺利完成其方法的执行,即使线程A在while死循环中。这意味着线程B可以得到CPU时间片并执行其任务,而线程A则一直保持运行状态,因为它被设计成无限循环。 然而,这种情况并...
本节将深入探讨while循环和foreach循环的拓展知识,以及它们在处理数组时的性能差异。 首先,`while`循环是一种基于条件的循环,它会持续执行循环体内的代码,只要条件为真。在PHP中,`while`循环的语法结构如下: ...
本篇文章将深入探讨在“学习Switch和循环的小源码(vs2008)”项目中涉及的关键知识点:do-while循环、switch语句以及构造函数。 首先,让我们了解一下do-while循环。这是C#中的一个基本控制结构,它与while循环类似...
在编程世界中,Java是一种广泛使用的面向对象的编程语言,以其强大的功能和跨平台特性而闻名。本项目“利用数组和循环实现的五子棋”是初学者学习Java的一个很好的起点,它涉及到基础的编程概念,如数组、循环以及...
通过以上步骤,你就可以在MFC中为线程创建一个自定义的消息循环,使得线程能够接收和处理消息,从而实现多线程环境下的并发处理。理解并熟练掌握线程消息循环的创建和管理对于开发高效、稳定的多线程MFC应用程序至关...
1. 创建一个基于对话框的应用程序。并增加如图所示控件;分别为3个进度条控件关联三个进度条类型的变量;并在对话框的初始化函数中,设定进度条的范围;为编辑框关联一个整型的变量;为12个按钮添加消息处理函数; 2...
在 `while` 循环中,意味着条件检查和循环体的重新开始。 3. **pass 语句**:`pass` 是一个空语句,主要用于占位或创建占位符。当需要一个语句但暂时还不知道具体实现时,可以使用 `pass`。它不执行任何操作,也...
在很多编程语言中,for循环的速度与while循环相当,但其简洁性和易读性使得它在许多场合更受欢迎。 2. **while循环**:while循环基于一个条件进行迭代,只要条件为真,就会继续执行循环体。这种循环适合处理未知...
6. **迭代器和生成器**:在Python中,迭代器允许以迭代方式访问容器对象,而生成器则是一种惰性计算的迭代器,节省内存。它们提供了更高效的循环方式,特别是处理大数据集时: ```python generator = (x for x in ...
在WordPress主题开发中,理解和掌握主循环的工作原理至关重要,因为这直接影响到网站内容的布局和显示。 首先,我们来看一下WordPress的主循环的基本结构。通常在WordPress模板文件中,如`index.php`、`single.php`...
- **while循环的else**:与for类似,当while的条件变为假时,执行else子句。 4. **循环嵌套** - **嵌套结构**:一个循环体内可以包含另一个循环,形成多层循环。 - **应用**:解决多维度问题,如二维数组的遍历...
文件“C++yuyan”可能涵盖了C++语法的基础知识,包括基本数据类型(如int、float、char)、控制结构(如if语句、for循环、while循环)、函数定义和调用、数组和字符串的使用等。同时,它可能还会涉及更高级的主题,...