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

怎么制作一个网站教程seo技术306

怎么制作一个网站教程,seo技术306,专业团队为您服务,企业运营系统作者简介: zoro-1,目前大一,正在学习Java,数据结构等 作者主页: zoro-1的主页 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 浅拷贝与深拷贝 浅拷贝浅拷贝定义浅拷贝代码演示浅…

在这里插入图片描述

作者简介: zoro-1,目前大一,正在学习Java,数据结构等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

浅拷贝与深拷贝

  • 浅拷贝
    • 浅拷贝定义
    • 浅拷贝代码演示
    • 浅拷贝的特点
  • 深拷贝
    • 深拷贝定义
    • 深拷贝代码演示
    • 深拷贝特点

浅拷贝

之前我们学了数组的拷贝,那么对象如何进行拷贝呢

浅拷贝定义

浅拷贝是一种复制对象的方法,在这种方法中,只复制对象的引用或指针,而不是对象本身的内容。

浅拷贝代码演示

class Hia{int a=6;
}
class Animal {String name="animal";int age=0;Hia hia=new Hia();public Animal(String name, int age) {this.name = name;this.age = age;}@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
public class Text4 {public static void main(String[] args) throws CloneNotSupportedException {Animal dog=new Animal("dog",5);Animal dogcopy=(Animal) dog.clone();}
}

代码讲解:

初始化Animal类为dog对象,现在想要copy一份dog对象,就要了解clone方法,他是object类里面的方法也就是Animal的父类的方法(因为所有类都是继承object类),这个类是由protected修饰所以我们不能直接调用,他的最大访问权限是不同包下的子类对象,且只能用super访问所以要在定义一个不带static修饰的方法下面访问,我这里采用的是重写父类的clone方法,返回super.clone();,clone的返回值对象是object,所以要强转为(Animal);
上面的代码运行出来结果还是错的
在这里插入图片描述
原因是在java里面只有实现Cloneable接口才说明这个类是支持拷贝的(虽然这个接口什么都没有);

浅拷贝的特点

特点是他只是将你类里面的变量的值赋值下来,不会将你成员对象引用的也赋值一份,下面这个图就能很好解释

在这里插入图片描述

当然我们也可以用代码直观的看出来

public class Text4 {public static void main(String[] args) throws CloneNotSupportedException {Animal dog=new Animal("dog",5);Animal dogcopy=(Animal) dog.clone();System.out.println(dog.hia.a);System.out.println(dogcopy.hia.a);dog.hia.a=9;System.out.println(dog.hia.a);System.out.println(dogcopy.hia.a);}
}

在这里插入图片描述

通过运行结果可以看出来我们发现该变原对象的hia.a,复制的对象的hia.a也发生了改变,这说明复制后的hia和前面指向的是同一个引用

想要将复制里面的引用也复制一份就要用到深拷贝

深拷贝

深拷贝定义

深拷贝是指在拷贝一个对象时,创建一个新的对象并将原对象的所有属性值都复制到新对象中,而不是简单地复制对象的引用地址。因此,在深拷贝后,两个对象之间是完全独立的,互不影响。深拷贝通常用于需要完全复制原对象的情况,例如在多线程环境下操作对象时,为了避免不同线程间共享对象导致的数据冲突,就需要使用深拷贝。深拷贝是指在拷贝一个对象时,创建一个新的对象并将原对象的所有属性值都复制到新对象中,而不是简单地复制对象的引用地址。

深拷贝代码演示

class Hia implements Cloneable{int a=6;@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
class Animal implements Cloneable{String name="animal";int age=0;Hia hia=new Hia();public Animal(String name, int age) {this.name = name;this.age = age;}@Overrideprotected  Object clone() throws CloneNotSupportedException {Animal animal=(Animal) super.clone();animal.hia=(Hia) animal.hia.clone();return animal;}
}
public class Text4 {public static void main(String[] args) throws CloneNotSupportedException {Animal dog=new Animal("dog",5);Animal dogcopy= (Animal) dog.clone();System.out.println(dog.hia.a);System.out.println(dogcopy.hia.a);dog.hia.a=9;System.out.println(dog.hia.a);System.out.println(dogcopy.hia.a);}
}

在这里插入图片描述
代码解释

我的理解是深拷贝是两层浅拷贝,现将对象进行一次拷贝然后再将dog对象里面的引用对象拷贝一份赋值给新的对象的里面的引用对象,譬如上面的代码,重写的clone()方法里面先super.clone(),复制一份当前类的对象,然后类里面的引用类型Hia调用clone(),复制一份再赋值给animal.hia,那现在animal就是就是彻底的拷贝了,然后返回animal;然后改变dog类里面的hia.a打印输出,只有dog类里面的改变了

深拷贝特点

在这里插入图片描述
深拷贝是一种复制数据的方式,它会创建一个完全独立的副本,而不是原始数据的引用。深拷贝的特点如下:

  1. 完全独立:深拷贝会创建一个全新的对象,而不是原对象的引用。

  2. 完整复制:深拷贝会复制所有的属性和方法,包括对象的嵌套属性和方法。

  3. 递归复制:如果对象有嵌套属性或方法,深拷贝会递归复制嵌套对象的属性和方法。

  4. 不受原对象改变影响:因为深拷贝生成的对象完全独立,所以它不会受到原对象的更改的影响。

需要注意的是,深拷贝可能会导致性能问题,特别是当数据结构非常复杂时。因为深拷贝会复制所有的属性和方法,包括对象的嵌套属性和方法,所以可能需要花费大量的时间和内存来完成。

今天的分享到这里就结束了,感谢大家支持,创作不易,希望大家能给博主个三连在这里插入图片描述

http://www.shuangfujiaoyu.com/news/49383.html

相关文章:

  • 05网语文建网站seo
  • 产品营销推广策略seo公司是做什么的
  • 全国卫生计生机构建设管理系统网站网站推广营销
  • 长沙网站维护公司网站排名优化系统
  • 装饰装修网站建设方案怎样做竞价推广
  • 怎么将自己做的网站发到网上去南昌seo顾问
  • 在本地做装修在那个网站好发帖推广
  • 做网站都是花钱吗seo外链推广工具下载
  • 电商在线设计网站线上渠道推广有哪些方式
  • 哪里做网站百度收录块google推广技巧
  • 免费b2b网站推广日本济南头条新闻热点
  • 盐城永祥建设有限公司网站提升排名
  • 销客多分销小程序价格seo推广排名平台有哪些
  • 做h5哪些网站好 知乎seo一个月工资一般多少
  • 做网站代理拉别人赌博关键词推广操作
  • 网站开发哪里可做私活如何快速提升自己
  • 网站分页设计长沙关键词优化公司电话
  • 工业产品设计流程图荆门网站seo
  • 做网站一定需要主机吗近三天时政热点
  • 网站做数据监测网络营销的职能有哪些
  • 成都网站建设免费咨询青岛网站建设公司电话
  • 网页设计期末作品源代码关键词首页排名优化平台
  • 做网站发表的赚钱信息推广的方式有哪些
  • 临沂建设工程信息网南昌seo排名扣费
  • 广州荔湾网站建设网站如何在百度刷排名
  • weebly做网站推广赚钱的软件
  • 如何腾讯云二级域名做网站友情链接平台
  • 创建网站运营费用国内的搜索引擎有哪些
  • 个人网站备案需要什么资料重庆森林为什么叫这个名字
  • 网页设计与网站建设网上推广培训