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

面试:说一下深拷贝,浅拷贝,引用拷贝吧;Object类中的clone是哪种呢?

目录

  • 深拷贝、浅拷贝、引用拷贝
  • Object类的clone()方法

深拷贝、浅拷贝、引用拷贝

在这里插入图片描述
● 浅拷贝: 对基本数据类型进行值传递; 对引用类型,复制了一份引用类型的变量 里面存储的内存地址一样 指向的对象也一样。

● 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。

● 引用拷贝: 是对引用地址的拷贝,说明引用地址一样,指向堆中的对象是同一个对象。

Object类的clone()方法

结果:Object 的 clone 方法是一个浅拷贝,如果它拷贝的对象中有其他对象,那么其中的对象是不会得到彻底的拷贝。

深拷贝是彻底的拷贝,两对象中所有的成员都是独立的一份,而且,成员对象中的成员对象也是独立一份。

浅拷贝中的某些成员变量可能是共享的,深拷贝如果不够彻底,就是浅拷贝。

代码验证:

public class Person implements Cloneable{
	
	private int age ;
	private String name;
	
	public Person(int age, String name) {
		this.age = age;
		this.name = name;
	}
	
	public Person() {}
 
	public int getAge() {
		return age;
	}
 
	public String getName() {
		return name;
	}
	
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return (Person)super.clone();
	}
}

按照如下代码验证:

Person p = new Person(23, "zhang");
Person p1 = (Person) p.clone();
		
String result = p.getName() == p1.getName() 
		? "clone是浅拷贝的" : "clone是深拷贝的";
		
System.out.println(result);
//输出为:clone是浅拷贝的

http://www.kler.cn/a/153096.html

相关文章:

  • filebeat报错dropping too large message of size
  • 2023.11.27 关于 Mybatis 增删改操作
  • informer 辅助笔记:main_informer.py
  • Elastic Search
  • 如何解决SSL证书部署后未生效或网站显示不安全
  • React实现登录授权功能
  • 智慧导诊系统的应用和实现技术分析
  • DM8数据库版本升级
  • 字节原来这么容易进,是面试官放水,还是公司实在是太缺人?
  • threejs教程
  • 对外汉语教师简历(精选12篇)
  • 【动态规划】LeetCode-面试题08.01三步问题
  • Ubuntu镜像与K8S冲突,容器持续Terminating
  • 从公务员考试中学诗词:东边日出西边雨,道是无晴却有晴
  • AdWords 广告字符的限制是多少?
  • 自定义函数中的(int*a,int*b)与(int*a,int n)
  • String类 ---java
  • 高清动态壁纸软件Live Wallpaper Themes 4K mac中文版功能
  • matlab基于线性二次调节器(LQR)法实现机器人路径规划可变轨迹跟踪
  • Java面向对象第十天