011--克隆和序列化应用+面试题

VIP免费
2024-12-11 3 0 531.84KB 16 页 5.9玖币
侵权投诉
克隆和序列化应用 + 面试题
克隆
在开始学习克隆之前,我们先来看看下面的代码,普通的对象复制,存在什么问题?
class CloneTest {
public static void main(String[] args) throws CloneNotSupportedException
{
// 等号赋值( 基本类型)
int number = 6;
int number2 = number;
// 修改 number2 的值
number2 = 9;
System.out.println("number" + number);
System.out.println("number2" + number2);
// 等号赋值(对象)
Dog dog = new Dog();
dog.name = "旺财";
dog.age = 5;
Dog dog2 = dog;
// 修改 dog2 的值
dog2.name = "大黄";
dog2.age = 3;
System.out.println(dog.name + "" + dog.age + "");
System.out.println(dog2.name + "" + dog2.age + "");
}
}
程序执行结果:
number6
number29
大黄,3
大黄,3
可以看出,如果使用等号复制时,对于值类型来说,彼此之间的修改操作是相对独立的,
而对于引用类型来说,因为复制的是引用对象的内存地址,所以修改其中一个值,另一个
值也会跟着变化,原理如下图所示:
因此为了防止这种问题的发生,就要使用对象克隆来解决引用类型复制的问题。
1)浅克隆
默认的 clone() 方法,为浅克隆,代码如下:
class CloneTest {
public static void main(String[] args) throws CloneNotSupportedException
{
Dog dog = new Dog();
dog.name = "旺财";
dog.age = 5;
// 克隆
Dog dog3 = (Dog) dog.clone();
dog3.name = "小白";
dog3.age = 2;
System.out.println(dog.name + "" + dog.age + "");
System.out.println(dog3.name + "" + dog3.age + "");
}
}
class Dog implements Cloneable {
public String name;
public int age;
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
程序执行结果:
旺财,5
小白,2
可以看出使用克隆就可以解决引用类型复制的问题了,原理如下图所示:
以上这种复制方式叫做 浅克隆。
浅克隆的实现条件 :需要克隆的对象必须实现 Cloneable 接口,并重写 clone() 方法,即
可实现对此对象的克隆。
然而 使用浅克隆也会存在一个问题 ,请参考以下代码。
class CloneTest {
public static void main(String[] args) throws CloneNotSupportedException
{
DogChild dogChild = new DogChild();
dogChild.name = "二狗";
Dog dog4 = new Dog();
dog4.name = "大黄";
摘要:

克隆和序列化应用+面试题克隆在开始学习克隆之前,我们先来看看下面的代码,普通的对象复制,存在什么问题?classCloneTest{publicstaticvoidmain(String[]args)throwsCloneNotSupportedException{//等号赋值(基本类型)intnumber=6;intnumber2=number;//修改number2的值number2=9;System.out.println("number:"+number);System.out.println("number2:"+number2);//等号赋值(对象)Dogdog=newDog();...

展开>> 收起<<
011--克隆和序列化应用+面试题.docx

共16页,预览4页

还剩页未读, 继续阅读

声明:本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。玖贝云文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知玖贝云文库,我们立即给予删除!
分类:计算机 价格:5.9玖币 属性:16 页 大小:531.84KB 格式:DOCX 时间:2024-12-11

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 16
客服
关注