Java对象拷贝的深拷贝和浅拷贝有何区别?

2026-06-10 07:060阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2993个文字,预计阅读时间需要12分钟。

Java对象拷贝的深拷贝和浅拷贝有何区别?

基本类型复制:布尔值是针对对象的,基本类型(如boolean、char、byte、short、float、double、long)已具备自身独立的特性。示例代码:

javaint x=1;int y=x;System.out.println(x); // 输出:1

// y=2; // 注释掉,避免改变x的值// System.out.println(y); // 注释掉,避免改变x的值

System.out.println(x); // 输出:1

基本类型拷贝:

克隆是针对于对象而言的,基本类型(boolean,char,byte,short,float,double.long)已久具备自身克隆的特性.

int x=1;
int y=x;
System.out.println(x);//1
System.out.println(y);//1
y=2;
System.out.println(x);//1
System.out.println(y);//2

JVM实现拷贝的目的:

大家先思考一个问题,为什么需要克隆对象?直接 new 一个对象不行吗?

  答案是:克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的 “状态” 就靠 clone 方法了。

阅读全文

本文共计2993个文字,预计阅读时间需要12分钟。

Java对象拷贝的深拷贝和浅拷贝有何区别?

基本类型复制:布尔值是针对对象的,基本类型(如boolean、char、byte、short、float、double、long)已具备自身独立的特性。示例代码:

javaint x=1;int y=x;System.out.println(x); // 输出:1

// y=2; // 注释掉,避免改变x的值// System.out.println(y); // 注释掉,避免改变x的值

System.out.println(x); // 输出:1

基本类型拷贝:

克隆是针对于对象而言的,基本类型(boolean,char,byte,short,float,double.long)已久具备自身克隆的特性.

int x=1;
int y=x;
System.out.println(x);//1
System.out.println(y);//1
y=2;
System.out.println(x);//1
System.out.println(y);//2

JVM实现拷贝的目的:

大家先思考一个问题,为什么需要克隆对象?直接 new 一个对象不行吗?

  答案是:克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的 “状态” 就靠 clone 方法了。

阅读全文