添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?

2024-06-24 02:08

本文主要是介绍添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?

 

答:对象的引用。以下代码可以证明:

Java代码   收藏代码
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. public class Test5 {  
  5.     public static void main(String args[]){  
  6.         List<User> userList1 = new ArrayList<User>();         
  7.         List<User> userList2 = new ArrayList<User>();     
  8.         User user1 = new User();  
  9.         userList1.add(user1);         
  10.         userList2.add(user1);  
  11.           
  12.         System.out.println("SET VALUE FOR USERLIST2:");       
  13.         for(User user: userList2){  
  14.             user.setName("name");  
  15.             user.setPassword("password");         
  16.         }  
  17.         System.out.println("PRINT VALUE FOR USERLIST1:");  
  18.         for(User user: userList1){  
  19.             System.out.println(user.getName());           
  20.             System.out.println(user.getPassword());           
  21.         }         
  22.     }  
  23.       
  24.     public static class User{  
  25.         private String name;  
  26.         private String password;  
  27.           
  28.         public String getName() {  
  29.             return name;  
  30.         }  
  31.         public void setName(String name) {  
  32.             this.name = name;  
  33.         }  
  34.         public String getPassword() {  
  35.             return password;  
  36.         }  
  37.         public void setPassword(String password) {  
  38.             this.password = password;  
  39.         }  
  40.     }  
  41. }  

 其输出结果是:

SET VALUE FOR USERLIST2:
PRINT VALUE FOR USERLIST1
name
password

 

设置userList2中元素的value,但是userList1中元素的value也发生了改变,证明集合中存放的是对象的引用。

转自:http://bettereveryday.iteye.com/blog/682322

这篇关于添加一个对象到集合中时,集合里面存放的是对象的引用还是对象本身?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088896

相关文章

sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符

《sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符》:本文主要介绍sqlserver、mysql、oracle、pgsql、sqlite五大... 目录一、转义符1.1 oracle1.2 sqlserver1.3 PostgreSQL1.4 SQLi

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

C++中悬垂引用(Dangling Reference) 的实现

《C++中悬垂引用(DanglingReference)的实现》C++中的悬垂引用指引用绑定的对象被销毁后引用仍存在的情况,会导致访问无效内存,下面就来详细的介绍一下产生的原因以及如何避免,感兴趣... 目录悬垂引用的产生原因1. 引用绑定到局部变量,变量超出作用域后销毁2. 引用绑定到动态分配的对象,对象

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Python内存管理机制之垃圾回收与引用计数操作全过程

《Python内存管理机制之垃圾回收与引用计数操作全过程》SQLAlchemy是Python中最流行的ORM(对象关系映射)框架之一,它提供了高效且灵活的数据库操作方式,本文将介绍如何使用SQLAlc... 目录安装核心概念连接数据库定义数据模型创建数据库表基本CRUD操作创建数据读取数据更新数据删除数据查

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave