当前位置: 首页 > news >正文

网站意见反馈源码主页模板

网站意见反馈源码,主页模板,怎么去营销自己的产品,柳州网站建设哪家公司好在 Java 中#xff0c;深拷贝和浅拷贝是对象拷贝#xff08;复制#xff09;时的两个重要概念#xff0c;它们决定了拷贝后的对象与原对象之间的关联性。以下是深拷贝和浅拷贝的详解#xff0c;包括定义、实现方式及其区别。 1. 概念解释 1.1 浅拷贝#xff08;Shallow …在 Java 中深拷贝和浅拷贝是对象拷贝复制时的两个重要概念它们决定了拷贝后的对象与原对象之间的关联性。以下是深拷贝和浅拷贝的详解包括定义、实现方式及其区别。 1. 概念解释 1.1 浅拷贝Shallow Copy 浅拷贝是对对象的一种表层复制 基本数据类型的字段会复制其值。引用数据类型的字段会复制其引用地址即引用同一个对象。 拷贝后的对象与原对象共享引用类型的成员。 特性 拷贝对象与原对象的引用类型字段指向同一个内存地址。修改引用类型的内容会影响到原对象。 1.2 深拷贝Deep Copy 深拷贝是对对象的一种完全复制 基本数据类型的字段会复制其值。引用数据类型的字段会递归拷贝新对象即创建新的内存空间拷贝后不共享引用。 拷贝后的对象与原对象完全独立。 特性 拷贝对象与原对象互不影响任何修改只会影响对应对象。 2. 示例代码 2.1 浅拷贝示例 使用 Object.clone() 方法实现浅拷贝 class Person implements Cloneable {String name;Address address;Person(String name, Address address) {this.name name;this.address address;}Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone(); // 调用 Object 的 clone 方法} }class Address {String city;Address(String city) {this.city city;} }public class ShallowCopyExample {public static void main(String[] args) throws CloneNotSupportedException {Address address new Address(New York);Person person1 new Person(John, address);// 浅拷贝Person person2 (Person) person1.clone();// 修改拷贝对象的引用类型字段person2.address.city Los Angeles;// 原对象的引用类型字段也被修改System.out.println(person1.address.city); // 输出Los Angeles} }2.2 深拷贝示例 手动实现深拷贝 class Person implements Cloneable {String name;Address address;Person(String name, Address address) {this.name name;this.address address;}Overrideprotected Object clone() throws CloneNotSupportedException {// 创建一个浅拷贝Person clonedPerson (Person) super.clone();// 手动深拷贝引用类型字段clonedPerson.address new Address(this.address.city);return clonedPerson;} }class Address {String city;Address(String city) {this.city city;} }public class DeepCopyExample {public static void main(String[] args) throws CloneNotSupportedException {Address address new Address(New York);Person person1 new Person(John, address);// 深拷贝Person person2 (Person) person1.clone();// 修改拷贝对象的引用类型字段person2.address.city Los Angeles;// 原对象的引用类型字段未被修改System.out.println(person1.address.city); // 输出New York} }3. 区别对比 特性浅拷贝深拷贝拷贝方式仅复制对象的基本类型字段和引用类型字段的引用地址。复制对象的所有字段包括引用类型字段所指向的对象。内存分配原对象和拷贝对象共享引用类型字段的内存地址。原对象和拷贝对象完全独立占用不同的内存空间。修改影响修改拷贝对象的引用类型字段会影响原对象。修改拷贝对象不会影响原对象。实现复杂度简单可以直接使用 Object.clone() 方法。较复杂需要手动实现递归拷贝。适用场景引用类型字段无需独立或对性能要求高的场景。引用类型字段需要独立且完全隔离的场景。 4. 实现深拷贝的常用方式 4.1 使用 clone() 方法 递归实现拷贝每个引用类型字段。需要确保所有类都实现 Cloneable 接口并重写 clone() 方法。 4.2 使用序列化 通过将对象序列化为字节流再反序列化来实现深拷贝 import java.io.*;class Person implements Serializable {String name;Address address;Person(String name, Address address) {this.name name;this.address address;} }class Address implements Serializable {String city;Address(String city) {this.city city;} }public class DeepCopyWithSerialization {public static void main(String[] args) throws IOException, ClassNotFoundException {Address address new Address(New York);Person person1 new Person(John, address);// 深拷贝Person person2 deepCopy(person1);// 修改拷贝对象的引用类型字段person2.address.city Los Angeles;// 原对象的引用类型字段未被修改System.out.println(person1.address.city); // 输出New York}// 序列化深拷贝方法private static T T deepCopy(T object) throws IOException, ClassNotFoundException {ByteArrayOutputStream byteOut new ByteArrayOutputStream();ObjectOutputStream out new ObjectOutputStream(byteOut);out.writeObject(object);ByteArrayInputStream byteIn new ByteArrayInputStream(byteOut.toByteArray());ObjectInputStream in new ObjectInputStream(byteIn);return (T) in.readObject();} }4.3 使用第三方库 一些第三方库如 Apache Commons Lang 的 SerializationUtils可以简化深拷贝的实现。 5. 注意事项 Cloneable 接口的限制 默认的 Object.clone() 方法只能实现浅拷贝需要手动实现深拷贝。 性能考虑 深拷贝通常比浅拷贝耗时更多尤其是引用类型字段复杂时。 引用循环问题 如果对象内部存在循环引用即对象引用自身或其他对象需要特别处理避免递归拷贝时发生栈溢出。 使用场景选择 如果引用类型字段无需独立修改浅拷贝通常已足够。如果引用类型字段需要独立且修改后不影响原对象使用深拷贝。 6. 总结 浅拷贝深拷贝仅复制值类型字段和引用地址复制值类型字段并递归复制引用类型字段所指向的对象性能较高但存在引用共享的问题性能较低但保证拷贝对象独立适用于引用类型字段无需独立修改的场景适用于引用类型字段需要独立且完全隔离的场景 在实际应用中应根据具体需求选择合适的拷贝方式。浅拷贝适用于简单的场景而深拷贝更适合复杂对象需要完全隔离的场景。
http://www.dnsts.com.cn/news/125512.html

相关文章:

  • 网站怎么无法访问企业网站备案管理系统
  • 公司模块网站制作wordpress 主题稳定
  • 互联网金融p2p网站建设模板一个月捞偏门可挣20万
  • 怎样维护网站中国世达建筑公司排名
  • 水果网站 模板沈阳自助建站软件
  • 大连做网站比较好的网站域名查询注册
  • 网站降权该怎么做网页排版设计软件
  • 网站建设 唐山一站式做网站哪家强
  • 成都网站设计公司电话建筑企业资质加盟
  • 甘肃省建设厅官方网站质监局h5在哪个网站中做
  • 古镇镇建网站公司网站建设怎样中英文
  • 网站后台数据分析怎么做企业数字化建设公司
  • wordpress整站克隆济南官网seo推广
  • 新闻资讯网站php源码通化建设工程信息网站
  • 电子商务网站建设需求文档旅游网站管理系统php
  • 公司网站网页制作建议辽宁省交通建设投资集团官方网站
  • 15年做哪个网站能致富100个经典商业案例分析
  • 移动局域网ip做网站山东做网站
  • 建筑网站首页大图海南工程网站建设
  • 哪个网站微博做的最好深圳华强北化妆品
  • 南昌建设医院官方网站凡客优品家居官网
  • 免费追剧网站大全室内装潢
  • 在县城怎么做网站公司net framework可以用来做网站吗
  • 在线做网站需要什么门业网站 源码
  • wordpress的知名网站wordpress 文章 形式
  • 网站建设项目创业计划书运营团队架构
  • 广州做网站哪个公司做得好数据开发
  • 网站开发命名规则wordpress 能做周报
  • 网站设计网站建设专业二级网站建设方案模板
  • 佛山网站建设模板建站如何用自己的域名做网站