java浅层复制
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
浅层复制(影子clone):最终调用Object的clone();
1.需要实现clone方法的类型必须实现Cloneable接口(标识接口),否则进行clone时会抛出CloneNotSupportedException.
2.重写clone方法时,surper.clone().无论类型的继承关系如何,最终调用的是Object类型的clone().
3.Object类型中的clone方法为native方法,且访问权限为protected的.应在重写clone方法时,将其访问权限声明为public.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
浅层复制的实质(调用Object类中clone方法产生的效果):
在内存中开辟一块和原始对象一样的空间,然后(按位)拷贝原始对象中的内容.其内容是该对象属性(基本类型,引用类型)的值.
其实质与java方法参数传递的方式相同:基本类型传递的是字面量值的拷贝,引用类型传递的是引用值(对象所在java堆中地址)的拷贝.
分享到:
相关推荐
- **实现方式**:可以通过实现`Cloneable`接口并重写`clone()`方法来实现浅层复制,而对于深层复制,可以通过序列化和反序列化来实现。 - **案例**:通过编写代码演示如何实现这两种复制方式,并比较它们的区别。 ...
Java中的基本类型可以分为八种:boolean、char、byte、short、int、long、float、double、void。每种基本类型都有其对应的默认值和所占空间大小。 基本类型的特殊处理 在Java中,对于基本类型,不需要使用new...
在编程领域,尤其是在Java语言中,对象的复制是常见的操作,这涉及到两个主要概念:浅拷贝(浅复制、浅克隆)和深拷贝(深复制、深克隆)。这两个概念是理解对象生命周期和内存管理的关键部分。下面将详细阐述它们的...
Java对象在内存中的分配主要发生在堆上,这是所有类实例和数组的内存来源。对象的内存布局包括实例变量、方法引用等,遵循Java对象模型。 2. **浅层大小、保留大小与弱引用** - **浅层大小**(Shallow Size):一...
- **浅层复制**仅复制对象的引用,因此复制的对象和原对象共享相同的成员变量。 - **深层复制**则会递归地复制对象及其所有成员变量的副本,创建完全独立的新对象。 - 通过了解这两者之间的差异,可以更好地掌握对象...
2. **复制算法**(Copying GC Algorithm):将内存分为两个相等的空间,每次只使用其中一个空间,回收时将另一个空间中的存活对象复制过来。 3. **标记-整理算法**(Mark-Compact GC Algorithm):标记过程与标记-...
Kryo还可以执行自动的深层和浅层复制/克隆。 这是从对象到对象的直接复制,而不是从对象到字节的复制。 联系人/邮件列表 请使用获取问题,讨论和支持。 请将Kryo问题追踪器的使用限制为错误和增强功能,而不是问题...
这意味着一个复杂对象图中的所有对象都可以被完全复制,而不仅仅是浅层的拷贝。 4. **内存管理**:Kryo可以使用用户提供的对象池,有效地复用对象,避免了频繁的对象创建和销毁,提升了程序性能。 5. **序列化策略...
浅层复制:只复制指向对象的指针,而不复制引用对象本身。深层复制:复制引用对象本身。例如,我们有个 A 对象,复制一份后得到A_copy 对象后,对于浅复制来说,A 和 A_copy 指向的是同一个内存资源,复制的只不过是...
11. 简述浅克隆和深克隆:浅克隆是对象的浅层复制,深克隆是对象的深层复制。 12. 文件系统的几个类:FileInputStream、FileOutputStream、FileReader、FileWriter 的区别:这些类是 Java 编程语言中的文件输入输出...