长沙网站如何快速提升排名?晚上睡不着时,有哪些应用可以看羞羞的内容?

摘要:长沙网站快速优化排名,晚上睡不着看点害羞的东西app,珠海网站制作定制,如何查询一个网站的注册信息作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验&am
长沙网站快速优化排名,晚上睡不着看点害羞的东西app,珠海网站制作定制,如何查询一个网站的注册信息作者主页#xff1a;Designer 小郑 作者简介#xff1a;3年JAVA全栈开发经验#xff0c;专注JAVA技术、系统定制、远程指导#xff0c;致力于企业数字化转型#xff0c;CSDN博客专家#xff0c;蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式#xff0c;并给… 作者主页Designer 小郑 作者简介3年JAVA全栈开发经验专注JAVA技术、系统定制、远程指导致力于企业数字化转型CSDN博客专家蓝桥云课认证讲师。 本文讲解了 Java 设计模式中的原型模式并给出了样例代码原型模式的主要目的是通过复制或克隆现有对象来创建新对象而无需依赖于显式的实例化过程。 目录 一、谈谈什么是对象克隆二、谈谈什么是深拷贝和浅拷贝有什么区别2.1 深拷贝2.2 浅拷贝2.3 小节 三、如何解决java对象拷贝的性能问题四、学习什么是原型模式五、原型模式上手实战六、原型模式的应用场景七、原型模式面试题八、文末福利 一、谈谈什么是对象克隆 在学习原型模式之前首先要理解对象克隆的概念。 在Java中 对象克隆是指创建一个现有对象的副本 \color{red}{对象克隆是指创建一个现有对象的副本} 对象克隆是指创建一个现有对象的副本对象克隆通常用于在不影响原始对象的情况下创建一个相同状态的新对象。 Java中的对象克隆可以通过实现 Cloneable 接口和重写 clone() 方法来实现。 在使用克隆时可以使用clone()方法创建对象的副本该方法返回一个新的对象该对象具有与原始对象相同的属性值。 Java 中的 clone() 方法执行的是浅拷贝这意味着克隆的对象和原始对象共享相同的引用类型字段如果需要实现深拷贝即克隆对象及其所有引用类型字段的副本就需要在 clone() 方法中进行相应的处理。 二、谈谈什么是深拷贝和浅拷贝有什么区别 在Java中 对象拷贝可以分为浅拷贝和深拷贝两种方式 \color{red}{对象拷贝可以分为浅拷贝和深拷贝两种方式} 对象拷贝可以分为浅拷贝和深拷贝两种方式它们之间的区别在于拷贝对象时是否创建了原始对象的副本以及对引用类型字段的处理方式。 2.1 深拷贝 深拷贝是指创建一个新对象该对象的字段值与原始对象完全相同包括引用类型字段。在深拷贝中不仅复制了对象的基本类型字段还创建了新的对象来存储引用类型字段的副本。这意味着修改拷贝对象的引用类型字段不会影响原始对象的引用类型字段因为它们引用的是不同的对象。 2.2 浅拷贝 浅拷贝是指创建一个新对象该对象的字段值与原始对象完全相同但对于引用类型字段它们共享相同的引用。换句话说浅拷贝只复制了对象中的基本类型字段而对于引用类型字段只是复制了引用没有创建新的对象。 在浅拷贝中修改拷贝对象的引用类型字段会影响到原始对象的引用类型字段。这是因为原始对象和拷贝对象共享相同的引用所以它们指向相同的内存地址。 2.3 小节 实现深拷贝的方式有多种比较常用的方法包括以下 3 3 3 点。 通过实现 Serializable 接口使用对象的序列化和反序列化来实现深拷贝。使用 Cloneable 接口和重写 clone() 方法来实现深拷贝。在 clone() 方法中除了调用 super.clone() 复制对象的基本类型字段外还需要对引用类型字段进行单独的深拷贝处理。 总结起来浅拷贝只复制对象的基本类型字段和引用类型字段的引用而深拷贝会复制对象的基本类型字段和引用类型字段的副本。 因此在需要保留对象独立性和避免原始对象修改的情况下使用深拷贝是更为合适的选择。 三、如何解决java对象拷贝的性能问题 在Java中对象拷贝可能面临性能问题特别是在处理大型对象或复杂对象图时以下是一些可以帮助解决 Java 对象拷贝性能问题的方法给同学们提供参考。 使用原型模式通过复制或克隆现有对象来创建新对象而无需依赖于显式的实例化过程从而避免了直接创建新对象的开销原型模式可以通过实现 Cloneable 接口和重写 clone() 方法来实现。 使用浅拷贝如果你只需要复制对象的基本类型字段并且可以共享引用类型字段那么浅拷贝是一个更高效的选择浅拷贝只涉及字段的复制因此比深拷贝更快。 使用构造函数手动编写一个构造函数以根据原始对象的属性创建新对象这种方式可以避免调用 clone() 方法或实现 Cloneable 接口的开销。 使用序列化和反序列化使用 Java 对象的序列化和反序列化机制可以实现深拷贝通过将对象序列化为字节流然后反序列化成新的对象可以创建对象及其所有引用字段的完全独立副本但序列化和反序列化也会带来一定的性能开销。
阅读全文