java--对象克隆

一、定义:

把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象复制

二、细节:

方法在底层会帮我们创建一个对象,并把原对象中的数据拷贝过去。
书写细节:

  1. 重写object中的clone方法
  2. 让javabean类实现cloneable接口
  3. 创建原对象并调用clone就可以了。

三、分类

1、浅拷贝

定义:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来
在这里插入图片描述

2、深拷贝

定义:基本数据类型拷贝过来;字符串复用;引用数据类型会重新创建新的
在这里插入图片描述

四、实现深拷贝

默认使用浅拷贝,想要使用深拷贝,需要重写clone方法或使用第三方工具类gson-2.6.2.jar

	@Override
	protected Object clone() throws CloneNotSupportedException {
	//调用父类中的clone方法
	//相当于让Java帮我们克隆一个对象,并把克隆之后的对象返回出去。
	
	//先把被克降对象中的数组获取出来
	int[] data = this.data;
	//创建新的数组
	int[] newData = new int[data.length];
	//拷贝数组中的数据
	for (int i = 0; i < data.length; i++) {
		newData[i] = data[i];
	}
	//调用父类中的方法克降对象
	User u = (User) super.clone();
	//因为父类中的克隆方法是浅克隆,替换克隆出来对象中的数组地址值
	u.data = newData;
	return u;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值