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

news2025/1/12 13:38:31

 

自验证:创建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());

    }
}

输出:

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

修改Student clone方法:

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

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

知识来源:

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

强引用、弱引用介绍:

https://www.cnblogs.com/Scott007/archive/2013/05/15/3080739.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/917521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-PHP - IntlChar类

在PHP7中&#xff0c;添加了一个新的 IntlChar 类&#xff0c;该类试图公开其他ICU函数。此类定义了许多静态方法和常量&#xff0c;可用于操作unicode字符。使用此类之前&#xff0c;您需要先安装 Intl 扩展名。 <?phpprintf(%x, IntlChar::CODEPOINT_MAX);print (IntlCh…

构建智慧停车场:4G DTU实现无线数据高速传输

物联网技术的快速发展使得各种设备能够实现互联互通&#xff0c;无线网络技术给我们的日常生活带来了极大的便利。其中的网络技术如无线WiFi及4G网络已经成为了物联网应用中不可或缺的组成部分。而在工业领域中对4G无线路由器的应用是非常广泛的&#xff0c;人们通过4G工业路由…

python中 * 的用法,超详细教程

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 python中 * 是非常常见的一个运算符&#xff0c;它主要有以下几个功能&#xff1a; 乘法运算符&#xff1b; 函数形参表示可变参数&#xff1b; 函数实参代表tuple&#xff1b; 序列解包为tuple&#xff1b; zip解包运算&…

知识蒸馏Demo,非常详细,适合入门

文章来自&#xff1a;Ai浩的“知识蒸馏实战&#xff1a;使用CoatNet蒸馏ResNet”&#xff0c;文章地址为&#xff1a;知识蒸馏实战&#xff1a;使用CoatNet蒸馏ResNet_知识蒸馏实例_AI浩的博客-CSDN博客 感谢作者&#xff01;&#xff01;&#xff01; 摘要 知识蒸馏&#xf…

nvm安装使用教程

文章目录 下载配置安装最新稳定版 node安装指定版本查看版本切换版本删除版本 常见问题安装node后 显示拒绝访问的问题使用cnpm会报错的问题降低cnpm版本npm镜像 下载 NVM for Windows 下载地址&#xff1a;https://link.juejin.cn/?targethttps%3A%2F%2Fgithub.com%2Fcoreyb…

《动手学深度学习》-19卷积层

沐神版《动手学深度学习》学习笔记&#xff0c;记录学习过程&#xff0c;详细的内容请大家购买书籍查阅。 b站视频链接 开源教程链接 卷积 使用一个12M像素的相机采集图片&#xff0c;因为是RGB图片所以有36M元素。 使用MLP来做分类会遇到的问题&#xff1a; 参数太大&#…

goland 中的调试器 -- Evaluate

今天一个好朋友 找到我&#xff0c;问我关于goland中Evaluate 小计算器的使用方式&#xff0c;说实话&#xff0c;我在此之前也没用过这个东西&#xff0c;然后我就找一些相关文档&#xff0c;但是这类文档少的可怜&#xff0c;所以我就稍微研究一下&#xff0c;找找材料&#…

【附安装包】Vero visi2021安装教程

软件介绍 Vero visi是世界领先的CAD/CAM解决方案&#xff0c;又简称为visi&#xff0c;由多个模块组成&#xff0c;包括VISI Modelling、VISI Analysis、VISI Mould、VISI Flow、VISI Electrode、VISI Progress、VISI Multi-Slides、VISI Machining 2D、VISI PEPS-Wire、WorkX…

《操作系统真象还原》学习笔记:第七章 中断

由于 CPU 获知了计算机中发生的某些事&#xff0c;CPU 暂停正在执行的程序&#xff0c;转而去执行处理该事件的程序&#xff0c;当这段程序执行完毕后&#xff0c;CPU 继续执行刚才的程序。整个过程称为中断处理&#xff0c;也称为中断。 把中断按事件来源分类&#xff0c;来自…

nginx:正向代理与反向代理

所谓代理服务器&#xff0c;就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器&#xff0c; 正向代理可以隐藏客户端&#xff1a;想要实现正向代理&#xff0c;得配置一台转发请求的跳板服务器&#xff0c;同时客户端还得配置跳板服务器的代理地址。 我的电脑访问这…

5大轻量开源的项目管理软件推荐,更适合中小团队!

随着互联网的发展&#xff0c;项目管理软件越来越受到企业和团队的重视。不仅可以提高工作效率&#xff0c;还可以帮助团队协作、进度跟踪和资源管理等方面&#xff0c;简化复杂的项目管理流程。那么&#xff0c;对于中小团队来说&#xff0c;有没有一款轻量易上手的适合他们的…

网络防御与蓝队实践:探讨网络防御策略、入侵检测系统、安全事件响应等蓝队方面的实际案例和方法

第一章&#xff1a;引言 网络安全一直是当今信息社会中至关重要的话题。随着技术的不断发展&#xff0c;网络威胁也愈发复杂和隐匿。在这样的背景下&#xff0c;网络防御变得尤为重要&#xff0c;蓝队作为网络防御的重要一环&#xff0c;起着至关重要的作用。本文将深入探讨网…

libdrm全解析一 —— 总述

本文参考以下博文&#xff1a; Linux libdrm代码完全解析 LIBDRM使用 最简单的DRM应用程序 &#xff08;single-buffer&#xff09; Linux libdrm库入门教程 10. DRM图形显示框架 LIBDRM 特此致谢&#xff01; 一、介绍 BLFS中给出的介绍 libdrm提供了一个用户空间库&…

2023年湖北中级工程师职称申报专业有哪些?甘建二告诉你

中级职称职称申报专业&#xff1a;环境工程、 土木建筑、土建结构、土建监理、土木工程、岩石工程、岩土、土岩方、风景园林、园艺、园林、园林建筑、园林工程、园林绿化、古建筑园林、工民建、工民建安装、建筑、建筑管理、建筑工程、建筑工程管理、建筑施工、建筑设计、建筑装…

36k字从Attention解读Transformer及其在Vision中的应用(附pytorch代码)

文章目录 0.卷积操作1.注意力1.1 注意力概述&#xff08;Attention&#xff09;1.1.1 Encoder-Decoder1.1.2 查询、键和值1.1.3 注意力汇聚&#xff1a; Nadaraya-Watson 核回归 1.2 注意力评分函数1.2.1 加性注意力1.2.2 缩放点积注意力 1.3 自注意力&#xff08;Self-Attenti…

舍不得跳过的广告?900万播放冲上B站热门

8月17日&#xff0c;B站官方公布了2023年第二季度财报。 B站在用户增长方面又创新高&#xff0c;本季度财报显示&#xff0c;B站日均活跃用户达9650万&#xff0c;同比增长15%。用户日均使用时长94分钟&#xff0c;创同期历史新高成为一大亮点。 除此之外&#xff0c;B站还放…

Lnton羚通视频算法算力云平台如何快速了解pandas(上)

创建对象 创建 Series s pd.Series([1, 2, 3, 6, np.nan, 6, 8, 10]) s0 1.0 1 2.0 2 3.0 3 6.0 4 NaN 5 6.0 6 8.0 7 10.0 dtype: float64创建 DataFrame 利用 date_range 创建时间索引&#xff0c;并用 numpy 创建一个随机数组&#xff0c;…

Jmeter常用线程组设置策略

一、前言 ​ 在JMeter压力测试中&#xff0c;我们时常见到的几个场景有&#xff1a;单场景基准测试、单场景并发测试、单场景容量测试、混合场景容量测试、混合场景并发测试以及混合场景稳定性测试 在本篇文章中&#xff0c;我们会用到一些插件&#xff0c;在这边先给大家列出&…

wazuh配置和案例复现

wazuh配置 安装wazuh有二种方法 第一种 在官网下载ova文件 打开VMware进行虚拟机安装 账号:wazuh-user 密码:wazuh 将网络设置为net模式 重启网卡 systemctl network restart查看ip ip add启动小皮 远程连接 默认账号和密码admin admin 第二种 yum安装根据官方文件的步骤…

flutter TARGET_SDK_VERSION和android 13

config.gradle ext{SDK_VERSION 33MIN_SDK_VERSION 23TARGET_SDK_VERSION 33COMPILE_SDK_VERSION SDK_VERSIONBUILD_TOOL_VERSION "33.0.0"//兼容库版本SUPPORT_LIB_VERSION "33.0.0"}app/build.gradle里面的 defaultConfig {// TODO: Specify your…