`

实例化的对象和引用...while(**.next()){实例化位置 、、***list.add(实例化的那个对象) }

 
阅读更多
public List<NewsCategory> getNewsCategoryList() {
		List<NewsCategory> newsCategoryList = new ArrayList<NewsCategory>();
		String sql ="select * from news_category";
		Object[] params = {};
		if(this.getConnection()){
			ResultSet rs = this.executeSQL(sql, params);
			try {
				while(rs.next()){
					//如果实例化NewsCategory写在while循环外 ,会导致list里面add进去6条重复数据!!!
					NewsCategory newsCategory = new NewsCategory();
					newsCategory.setId(rs.getInt("id"));
					newsCategory.setName(rs.getString("name"));
					newsCategory.setCreateDate(rs.getTimestamp("createDate"));
					
					newsCategoryList.add(newsCategory);
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				this.closeResource();
			}
		}
		
		return newsCategoryList;
	}

List 的add方法 添加的是 new出来对象的引用变量newsCategory,所以 如果要需要存储不同的对象 ,就要各自用new来实例化。

 

如果实例化NewsCategory写在while循环外,只是实例化了一个NewsCategory对象

          new操作也就是会在堆内存中分配一个对象的内存引用变量 newsCategory指向这个内存中的对象

 所以:List 的add方法增加的是同一个变量 newsCategory,并增加了6次

分享到:
评论

相关推荐

    Python英语单词整理.pdf

    38. **static** / **object** / **instance** / **self**:静态方法、对象、实例和self关键字,涉及面向对象的概念。 39. **inheritance** / **super** / **override**:继承、超类调用和方法覆盖,用于扩展和复用...

    JavaEE技术面试常见问题.doc

    2. **对象实例化方式及区别** - **使用构造函数**:最常见的实例化方式。 - **使用工厂方法**:适用于需要根据条件创建不同类型对象的情况。 - **使用反射**:动态创建对象。 3. **基本数据类型与包装类的区别*...

    实例14列表(java新手绝对实例)

    5. **实例化与基本操作**: 在实例14中,我们将学习如何创建ArrayList和LinkedList对象,向列表中添加元素,以及使用迭代器遍历并操作列表。例如,`List&lt;String&gt; myList = new ArrayList();` 创建了一个存储字符串...

    企业面试题汇总_net方向.doc 面试者可以下载参考

    - **抽象类**: 包含抽象方法的类,不能实例化,可以被继承。 - **接口**: 定义了一组行为规范,可以被多个类实现。 - **区别**: - 抽象类可以包含具体的方法实现,而接口中只能包含抽象方法。 - C#中类只能继承一...

    关于C#的一些面试题目

    - **初始化:** `for`循环在每次迭代前都执行初始化操作,而`while`和`do...while`只在循环开始前检查条件。 - **执行顺序:** `do...while`至少执行一次循环体,而`while`可能一次都不执行。 - **适用场景:** `...

    Python 2.4 Quick Reference Card

    - **实例化**: 使用类名后跟括号来创建对象。 - **示例**: ```python p1 = Person('Alice', 25) p1.greet() # 输出: Hello, my name is Alice and I am 25 years old. ``` **类与对象关系** - **属性**: 类的...

    vb.net小代码

    12. **模块(Module)**:VB.NET中的模块可以包含共享的常量、变量、过程和函数,但不能实例化。`Module Module1`用于定义模块。 13. **XML支持**:VB.NET提供了强大的XML操作能力,如内联XML字面量和XML属性,使得...

    深入浅出linux内核源代码之双向链表list_head.pdf

    这样,每个 `person` 或 `animal` 实例不仅包含了年龄和体重等数据成员,还能通过 `list` 成员与其他实例形成双向链表结构。 #### 三、`list_head` 相关函数介绍 `&lt;linux/list.h&gt;` 头文件中提供了一系列用于操作...

    20个非常有用的Java功能代码

    - `Constructor&lt;?&gt; constructor = clazz.getConstructor(args...)`获取构造函数并实例化对象。 20. **集合并发操作**: - `ConcurrentHashMap`、`CopyOnWriteArrayList`等类提供线程安全的集合操作。 以上这些...

    Java经典实例

    ### Java经典实例解析 #### 获取环境变量与系统属性 在Java中,获取环境变量和系统属性是常见的操作,这些操作通常用于配置应用的行为或者获取运行时的信息。 **环境变量** 1. **`System.getenv("PATH");`**:此...

    java单向链表代码实现

    在Java编程中,单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的引用。这个数据结构允许快速插入和删除操作,但不支持随机访问。下面我们将深入探讨Java中单向链表的...

    java基础知识点

    - **抽象**: `abstract`关键字用于声明抽象类和抽象方法,抽象类不能直接实例化,抽象方法没有方法体。 - **方法覆盖**: 子类可以覆盖父类的方法,以提供不同的实现。 - **引用数据类型转换**: 引用数据类型可以进行...

    数据库实体对象转换JavaBean_数据库对象转Javabean_

    本文将详细讲解如何将数据库实体对象转换为Java Bean对象,以实现数据的有效封装和处理。 首先,我们需要理解数据库实体对象和Java Bean的概念。数据库实体对象通常指的是在数据库中的一条记录,它包含了表中的所有...

    迭代器模式代码示例

    4. **具体聚合对象(Concrete Aggregate)**:实现聚合对象接口,维护一个元素集合,并提供创建具体迭代器的实例。 让我们通过一个简单的Java示例来理解迭代器模式: ```java // 聚合对象接口 interface ...

    Collection集合基本练习1

    3. **多态与ArrayList**:在main()方法中,可以使用多态的方式实例化ArrayList对象,并存储特定类型的数据,如String。 4. **迭代器与泛型**: - 迭代器(Iterator):用于遍历集合中的元素,提供了`hasNext()`和`...

    java精华

    - `==`比较的是对象引用,判断两个对象是否指向同一个内存地址。 - `equals`比较的是对象的内容是否相等。 #### 17. 集合类Set、List与Map的区别 - **Set**不允许重复元素,存储唯一值。 - **List**保持插入顺序,...

    ( 【C#实例】链表实现自制List类

    本实例将探讨如何使用链表来实现一个自定义的List类。 链表是一种线性数据结构,由一系列节点(也称为元素或项)组成,每个节点包含数据和指向下一个节点的引用。与数组不同,链表的元素在内存中不是连续存储的,这...

    美图-PHP笔试题.docx

    - 第二次调用`func($obj-&gt;a)`时,对象属性`$a`被传递给`func()`,但由于`func()`内部并没有显式声明`$a`为引用,所以修改的是局部变量,不影响对象的属性。 2. **输出结果:** - `1` - `100` - `1` - `100` -...

    CSV文件格式读写代码

    1. **初始化CSVReader对象**:通过指定文件路径、分隔符及字符集来初始化`CsvReader`对象。 2. **读取表头**:调用`readHeaders()`方法读取CSV文件的第一行作为表头,并存储为字符串数组。 3. **循环读取数据行**:...

Global site tag (gtag.js) - Google Analytics