[置顶] Java 之浅复制和深复制
来源:互联网 发布:网络文明调查报告总结 编辑:程序博客网 时间:2024/06/14 01:43
1 浅复制和深复制区别
浅复制:浅复制只是复制本对象的原始数据类型,如int、float、String,对于数组和对象引用等是不会复制的。因此浅复制是有风险的。
深复制:不但对原始数据类型进行复制,对于对象中的数组和对象引用也做复制的行为,从而达到对对象的完全复制。
2 代码示例
package com;import java.util.ArrayList;public class Test implements Cloneable {// 私有属性private ArrayList<String> nameList = new ArrayList<String>();// 添加内容public void add(String s) {this.nameList.add(s);}// 获得ArrayList对象public ArrayList<String> get() {return this.nameList;}// clone方法@Overridepublic Test clone() {try {Test test = (Test) super.clone();test.nameList = (ArrayList<String>) this.nameList.clone(); //Areturn test;} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}/** * @param args */public static void main(String[] args) {// 创建test对象Test test = new Test();// 设置test对象内容test.add("aa");test.add("bb");// 打印显示test中的nameList内容System.out.println("test:" + test.get());// 克隆test对象生成test2对象Test test2 = test.clone();// 添加"cc"内容到test2对象中test2.add("cc");// 打印显示test2中的nameList内容System.out.println("test2:" + test2.get());// 打印显示test中的nameList内容System.out.println("test:" + test.get());}}
3 浅复制运行结果
test:[aa, bb]
test2:[aa, bb, cc]
test:[aa, bb, cc]
4 深复制运行结果
test:[aa, bb]
test2:[aa, bb, cc]
test:[aa, bb]
5 结果分析
从结果分析和代码来看,深复制对浅复制只是多了A处的代码。
0 0
- [置顶] Java 之浅复制和深复制
- Java 之浅复制和深复制
- JAVA学习总结之简单复制、浅复制、深复制
- java中的深复制和浅复制
- java 浅复制和深复制
- Java浅复制和深复制
- java深复制和浅复制
- java中的深复制和浅复制
- java深复制和浅复制
- java中的深复制和浅复制
- java中的深复制和浅复制
- Java中浅复制和深复制
- java的深复制和浅复制
- Java中深复制和浅复制
- java详解浅复制和深复制
- Java中的深复制和浅复制
- java深复制和浅复制
- Java 浅复制和深复制
- Spring-8 , bean的作用域
- [置顶] Java 6和Java 7对throw语句的不同理解
- PHP中 var 修饰符的作用
- JS字符串的常用方法汇总
- openfire详细介绍
- [置顶] Java 之浅复制和深复制
- [置顶] 三张图讲清楚Java中的方法的参数传递机制
- 跳台阶(递归)
- [置顶] 多例设计模式
- 在HTML内嵌入PDF文件
- Android 混淆 以及 java代码方式实现混淆配置
- 记住密码
- [置顶] 桥接模式——开关和电灯照明
- You need to use a Theme.AppCompat theme (or descendant) with this activity