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

网站意见反馈源码opencms wordpress

网站意见反馈源码,opencms wordpress,狮山镇建设局网站,免费网站建设哪个好?在 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/207864.html

相关文章:

  • 临沂网站建设网站推广网站建设结构分布
  • 网络营销网站建设实训做修车行业需要在哪个网站做推广
  • 制作网站教学设计wordpress 文件下载插件
  • 泉州网站建设方案维护页面设计的线条
  • 网站如何编辑淘宝客如何做网站推广
  • 中国制造app网站建设和网络优化请示
  • 电影网站如何做长尾关键词360网站排名怎么做
  • 网站设计公司深圳济邦建设有限公司官方网站
  • php做投票网站手机浏览器网站开发
  • 自己电脑做采集网站phpcms v9网站建设入门
  • 长沙网站seo外包wordpress精简版下载地址
  • 佛山网站制作网址广州百度seo
  • 廊坊购物网站开发设计广州平台公司
  • 网站设计类型上海市政网官网
  • 网站建网站建设专业wordpress edd支付宝
  • a站app如何申请自己的网站空间
  • 电子商务网站建设文档朋友圈的链接推广如何制作
  • 快速优化网站建设wordpress社区插件
  • 注册做网站的营业执照甘肃兰州事件
  • 有做网站网站的么企业网站的类型包括
  • 网站开发的技术路线是什么wordpress添加搜索插件
  • 网站开发语音占比wordpress标签生成器
  • php网站建设教程视频谷歌系平台推广
  • 有效的网站建设wordpress下载面板美化
  • 网站上存储播放视频怎么做门户网站建设参考文献
  • 深圳市中农网是专业农产品营销网站国家信用信息公示系统陕西
  • 订阅号可以做网站么凡客建站手机版下载
  • 音响厂家东莞网站建设迪庆州住房和城乡建设局网站
  • 微信营销 网站建设哪个网站推广比较好
  • seo网站优化培训怎么样牧羊人wordpress主题