首页 > 编程语言 >Java 深拷贝浅拷贝

Java 深拷贝浅拷贝

时间:2023-04-13 11:22:56浏览次数:42  
标签:Java 数据类型 System copyOf 拷贝 arraycopy

Arrays.copyOf()方法在底层是调用了 System.arraycopy() 

对于基本数据类型来说System.arraycopy() 方法是深拷贝,对于引用数据类型来说 System.arraycopy() 方法是浅拷贝。

总结:

拷贝方式数值类型引用类型推荐使用
for循环 深拷贝 浅拷贝  
copyOf 深拷贝 浅拷贝 推荐
arraycopy 深拷贝 浅拷贝 推荐
clone 深拷贝 浅拷贝  

ArrayList#toArray()方法底层用的是Arrays.copyOf()。

那么对于引用类型,Java如何实现深拷贝呢?

推荐: 通过对象序列化实现深拷贝(实现Serializable接口)

标签:Java,数据类型,System,copyOf,拷贝,arraycopy
From: https://www.cnblogs.com/qionglouyuyu/p/17312819.html

相关文章

  • 用java做一个并发10W的网站,需要用到的技术有这些!
        你需要使用以下技术和工具:JavaWeb框架:选择一个性能高、可扩展性好、易于使用和维护的JavaWeb框架,如SpringMVC、Struts2、PlayFramework等。数据库:使用高性能的数据库系统,如MySQL、PostgreSQL、Oracle等。使用数据库连接池可以提高性能。缓存:使用缓存可......
  • Java基础语法
    Java基础语法注释、标识符、关键字注释注释并不会被执行,是给我们程序员看的书写注释是一个非常好的习惯Java注释的分类:单行注释://多行注释:/***/文档注释标识符标识符的作用用来表示变量名、类名、方法名、数组名和文件名等是一个有效的字......
  • Java流程控制
    Java流程控制用户交互ScannerScanner对象Java提供了一个工具类,可以通过Scanner类来获取用户的输入基本语法Scanners=newScanner(System.in)通过Scanner类的next()与nextLine()方法获取输入的字符串,再读取钱我们一般需要使用hasNext()和hasNextLine()判断是否有还......
  • 基于Java+uniapp小程序实现餐厅校园订餐平台
    基于Java+Vue+uniapp微信小程序实现餐厅校园订餐平台博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域一、前言介绍:传统的校园订餐管理方式都在使用手工记录的方式进行数据的登记,这种方式耗时,而且对于数据量比较大的情况想......
  • 基于Java+Springboot+vue网上商品订单转手系统设计和实现
    基于Java+Springboot+vue网上商品订单转手系统设计和实现一、前言介绍:1.1项目摘要传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装网上商品订单转手系统软件来发挥其高效地信息处理......
  • Javascript对象
    对象对象是一组无序的相关属性和方法的集合,所有事物都是对象,例如字符串,数值,数组,函数对象由属性和方法组成属性:事物的特征,常用名词方法:事物的行为,常用动词创建对象利用对象字面量创建对象varobj={uname:'tom',age:18,sex:'男',......
  • 一个Java web 应用系统的需求文档示例:
    #需求文档##引言本文档旨在描述一个在线商城网站的需求,并给出设计方案。该网站是一个B2C电商平台,旨在提供给用户方便快捷的购物体验。本文档面向的读者包括项目经理、开发人员、测试人员和其他与该系统相关的人员。##功能需求本次需求的功能需求包括:1.用户登录和注......
  • JavaScript 数组字符串转换Json格式
    JavaScript数组字符串转换Json格式//滔Roy2023.04.13functionparseStringToArray(str){//尝试将字符串解析为JSON格式try{constarr=JSON.parse(str);//如果解析成功,则直接返回解析结果if(Array.isArray(arr)){returnarr;}}......
  • JAVA 用 List 实现堆
    大顶堆:每个父节点都大于子节点小顶堆:每个父节点都小于子节点在堆中,每次加入元素或者移除元素,都要调整堆的位置,使其满足堆的定义。常用于topK问题,k个最大/最小元素,每次弹出大顶堆/小顶堆堆顶元素即可。以及堆排序问题,堆排序可以看成是将待排序的数组元素依次加入堆(每次加入......
  • Java应用调优
    针对Java应用,性能诊断工具主要分为两层:OS层面和Java应用层面(包括应用代码诊断和GC诊断);1.OS诊断(关注CPU、内存和IO三方面):LoadAveragetop命令按照经验,若数值小于0.7*CPU个数,则系统工作正常;若超过这个值,甚至达到CPU核数的四五倍,则系统的负载就明显偏高;CPU使......