java浅拷贝和深拷贝的区别:Java中浅拷贝与深拷贝的区别

实例实例Java 浅拷贝:浅拷贝是指在拷贝的过程中只复制对象本身,而不复制它包含的引用类型的成员变量。Java 深拷贝:深拷贝是指在拷贝的过程中,不仅复制对象本身,也复制它包含的引用类型的成员变量。

实例

Java 浅拷贝:浅拷贝是指在拷贝的过程中只复制对象本身,而不复制它包含的引用类型的成员变量。

Java 深拷贝:深拷贝是指在拷贝的过程中,不仅复制对象本身,也复制它包含的引用类型的成员变量。

两者的区别:

1. 浅拷贝只复制对象本身,而不复制它包含的引用类型的成员变量;而深拷贝不仅复制对象本身,也复制它包含的引用类型的成员变量。

2. 浅拷贝只复制了对象本身,而深拷贝复制了对象本身和它包含的引用类型的成员变量,所以深拷贝会更加耗时。

代码实例:

//浅拷贝

public class ShallowCopy {

public static void main(String[] args) throws CloneNotSupportedException {

Person person = new Person("John", 20);

Person clonePerson = (Person) person.clone();

System.out.println(person == clonePerson); //false

System.out.println(person.getName() == clonePerson.getName()); //true

}

}

class Person implements Cloneable {

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

protected Object clone() throws CloneNotSupportedException {

return super.clone();

}

}

//深拷贝

public class DeepCopy {

public static void main(String[] args) throws CloneNotSupportedException {

Address address = new Address("China", "Beijing");

Person person = new Person("John", 20, address);

Person clonePerson = (Person) person.clone();

System.out.println(person == clonePerson); //false

System.out.println(person.getName() == clonePerson.getName()); //true

System.out.println(person.getAddress() == clonePerson.getAddress()); //false

}

}

class Person implements Cloneable {

private String name;

private int age;

private Address address;

public Person(String name, int age, Address address) {

this.name = name;

this.age = age;

this.address = address;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void set

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(352)
css去掉a标签下划线:标题
上一篇
java版本下载:下载 Java 版本的步骤指南
下一篇

相关推荐

  • java脚手架搭建:如何使用Java脚手架来构建应用程序

    Java脚手架搭建的步骤:创建Maven项目:使用maven--webapp创建一个Maven项目,并在pom.xml中添加所需的依赖。…

    2023-06-08 07:09:20
    0 71 39
  • java api接口文档使用说明

    Java API接口文档是指用于Java编程的应用程序编程接口(API)的文档。它们包含有关Java类、接口、方法和属性的详细信息,以及如何使用它们来开发Java应用程序的指导。…

    2023-02-12 13:09:39
    0 46 76
  • java中间价都有哪些深入研究实施最佳实践

    示例示例Java中间件主要包括:企业应用服务器( Server):主要用于构建企业级应用,如、、JBoss等。…

    2023-06-30 04:42:00
    0 84 24
  • java反射性能的如何优化:优化Java反射性能的方法

    示例示例Java反射性能优化的技术有以下几种:使用静态变量或常量:在使用反射时,应该尽量使用静态变量或常量,而不是每次都使用字符串来指定反射的对象。…

    2023-01-22 03:09:39
    0 71 95
  • java在线题库:Java中如何使用多线程实现并发操作?

    Java在线题库是一种提供Java语言编程练习的网站,它可以帮助用户更好地理解和掌握Java编程语言。它提供了大量的Java编程练习题,用户可以通过完成这些练习来提高自己的Java编程技能。Java在线题库可以帮助用户更好地理解和掌握Java编程语言,因为它提供了大量的Java编程练习题,用户可以通过完成这些练习来提高自己的Java编程技能。此外,Java在线题库还可以帮助用户更好地了解Java编程语言的基本原理,以及如何使用它来解决实际问题。…

    2023-04-02 05:32:09
    0 23 91
  • java测试工程师面试题:Java 测试工程师如何准备面试?

    示例示例请描述你对Java测试的理解Java测试是一种用于验证和验证Java代码的过程,以确保代码正确地实现其设计目标。它包括单元测试,集成测试,功能测试,性能测试,回归测试等,以及其他类型的测试,以确保软件系统的正确性。你有什么测试工具经验我有使用JUnit,TestNG,和JMeter等测试工具的经验。我还有使用Mockito。Spring Boot Test。等框架的经验。…

    2023-08-18 06:40:05
    0 91 22
  • java培训机构哪个好:如何选择最好的Java培训机构?

    由于每个人的学习需求不同,因此不能给出一个明确的答案,但是可以提供一些建议,帮助您选择最适合您的java培训机构。先确定自己的学习目标,比如想学习java编程、web开发、android应用开发等,然后根据自己的学习目标,选择有相关课程的培训机构。…

    2023-04-17 12:29:01
    0 69 90
  • java商城系统shopxx:shopxx实现安全、便捷的网上购物体验

    ShopXX是一款基于Java的开源商城系统,用于构建具有购物车功能的在线商店。它是一个可扩展的、可自定义的、可定制的商城系统,可以帮助用户快速构建一个完整的在线商店。…

    2023-10-03 05:26:07
    0 60 82

发表评论

登录 后才能评论

评论列表(66条)