java八股文面试[java基础]——浅拷贝和深拷贝

这篇具有很好参考价值的文章主要介绍了java八股文面试[java基础]——浅拷贝和深拷贝。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java八股文面试[java基础]——浅拷贝和深拷贝,java八股文,java,面试,开发语言

 java八股文面试[java基础]——浅拷贝和深拷贝,java八股文,java,面试,开发语言

自验证:创建Class Student两个类, Student中含有Class对象

public class Class implements Cloneable {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String name;

    public Class(String name) {
        this.name = name;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}
public class Student implements Cloneable {
    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;
    }

    public Class getClazz() {
        return clazz;
    }

    public void setClazz(Class clazz) {
        this.clazz = clazz;
    }

    private String name;
    private int age;
    private Class clazz;

    public Student(String name, int age, Class clazz) {
        this.name = name;
        this.age = age;
        this.clazz = clazz;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

测试代码:

public class Copy {
    public static void main(String[] args) throws CloneNotSupportedException {
        Class clazz = new Class("一班");
        Student student = new Student("张三", 18, clazz);
        Student newStudent = (Student) student.clone();
        student.getClazz().setName("二班");

        System.out.println("=== student===");
        System.out.println(student);
        System.out.println(student.getName());
        System.out.println(student.getAge());
        System.out.println(student.getClazz());
        System.out.println(student.getClazz().getName());

        System.out.println("=== newStudent===");
        System.out.println(newStudent);
        System.out.println(newStudent.getName());
        System.out.println(newStudent.getAge());
        System.out.println(newStudent.getClazz());
        System.out.println(newStudent.getClazz().getName());

    }
}

输出:

java八股文面试[java基础]——浅拷贝和深拷贝,java八股文,java,面试,开发语言

可以看到不同的Student对象,但是有相同的Class对象

修改Student clone方法:

@Override
    protected Object clone() throws CloneNotSupportedException {
        Student student = (Student) super.clone();
        student.setClazz((Class) clazz.clone());
        return student;
    }

可以看到不同的class对象,不同的值:

java八股文面试[java基础]——浅拷贝和深拷贝,java八股文,java,面试,开发语言

知识来源:

【23版面试突击】什么是浅拷贝和深拷贝_哔哩哔哩_bilibili

强引用、弱引用介绍:

https://www.cnblogs.com/Scott007/archive/2013/05/15/3080739.html文章来源地址https://www.toymoban.com/news/detail-669277.html

到了这里,关于java八股文面试[java基础]——浅拷贝和深拷贝的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 前端基础面试题八股文

    前端基础面试题八股文

    代码结构: 使页面在没有css的情况下,也能够呈现出好的内容结构 有利于SEO: 爬虫根据标签来分配的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息 方便其他设备解析: 如屏幕阅读器、盲人阅读器、移动设备等,以有意义的方式来渲染页面 便于

    2024年02月07日
    浏览(11)
  • Java 面试八股文

    参考: 2023年 Java 面试八股文(20w字)_json解析失败_leader_song的博客-CSDN博客

    2024年02月13日
    浏览(14)
  • Java面试必备八股文

    Java面试必备八股文

    1.1)Java有哪几种数据类型 基本数据类型:byte(1字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节) char(2字节) boolean(1字节) 引用数据类型:String 类 接口 抽象类 枚举 数组 1.2)JVM、JRE和JDK的关系 JVM指的是Java的虚拟机,Java程序需要运行在虚拟机上

    2023年04月08日
    浏览(18)
  • Java面试八股文宝典:序言

    Java作为一门广泛应用于企业级应用开发的编程语言,一直以来都是技术面试中的重要话题。无论您是刚刚踏入编程世界的新手,还是经验丰富的Java开发工程师,都需要通过面试来展示自己的技能和知识。 在面试中,除了技术知识,还需要展现出解决问题、沟通能力和编程实

    2024年02月09日
    浏览(18)
  • 【八股文篇】Java 面试题

    【八股文篇】Java 面试题

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO TOP红人 Java知识图谱点击链接: 体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收藏关注下 , 不然下次找不到哟

    2024年02月12日
    浏览(16)
  • 一天吃透Java面试八股文

    一天吃透Java面试八股文

    Java是一门面向对象的编程语言 。面向对象和面向过程的区别参考下一个问题。 Java具有平台独立性和移植性 。 Java有一句口号: Write once, run anywhere ,一次编写、到处运行。这也是Java的魅力所在。而实现这种特性的正是Java虚拟机JVM。已编译的Java程序可以在任何带有JVM的平台

    2024年02月05日
    浏览(15)
  • 34 道 Java八股文 精选面试题

    34 道 Java八股文 精选面试题

    java 是一门 开源的跨平台的面向对象的 计算机语言.   跨平台是因为 java 的 class 文件是运行在虚拟机上的,其实跨平台的,而 虚拟机是不同平台有不同版本 ,所以说 java 是跨平台的. 面向对象有几个特点:   1. 封装 两层含义:一层含义是把对象的属性和行为看成一个密不可分的

    2024年02月10日
    浏览(15)
  • java八股文面试[多线程]——自旋锁

    java八股文面试[多线程]——自旋锁

    优点: 1.  自旋锁尽可能的减少线程的阻塞, 这对于锁的竞争不激烈,且占用锁时间非常短的代码块来说性能能大幅度的提升,因为自旋的消耗会小于线程阻塞挂起再唤醒的操作的消耗  ,这些操作会导致线程发生两次上下文切换! 2. 非自旋锁在获取不到锁的时候会进入阻

    2024年02月10日
    浏览(13)
  • 一天吃透Java并发面试八股文

    内容摘自我的学习网站:topjavaer.cn 分享50道Java并发高频面试题 。 线程池:一个管理线程的池子。 嗯,手动创建线程有两个缺点 不受控风险 频繁创建开销大 为什么不受控 ? 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建线程没有统一标准,比如创建的

    2024年02月08日
    浏览(17)
  • java八股文面试[JVM]——垃圾回收

    java八股文面试[JVM]——垃圾回收

    参考:JVM学习笔记(一)_卷心菜不卷Iris的博客-CSDN博客 GC垃圾回收 面试题: JVM内存模型 以及分区,需要详细到每个区放什么 堆里面的分区:Eden,survival from to,老年代,各自的特点。 GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方 针

    2024年02月11日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包