【重难点】【Java基础 06】浅克隆与深克隆、Object对象的常用方法、util包下的接口

文章目录

  • 【重难点】【Java基础 06】浅克隆与深克隆、Object对象的常用方法、util包下的接口
  • 一、浅克隆与深克隆
    • 1.介绍
  • 二、Object对象的常用方法
    • 1.介绍
  • 三、util包下的接口和类
    • 1.介绍
  • 参考链接

一、浅克隆与深克隆

1.介绍

克隆就是依据已有的数据,创造一份新的完全一样的数据拷贝。实现克隆有多种方式,可以手动 new 出一个新对象,然后将原来对象的数据一个一个 set 到新的对象中。还可以使用 clone 方法,使用 clone 方法必须实现 Cloneable 接口并重写 clone 方法

浅克隆

对于一个类中的基本类型来说,使用 clone 方法是完全没有问题的,但是对于引用类型,修改原件或者拷贝的值,另一个也会被修改,为了解决这个问题就需要进行深克隆

深克隆

深克隆与浅克隆的区别就是,浅克隆仅仅拷贝了引用类型的指向,深克则不仅拷贝了栈中的引用,还拷贝了堆中的实际对象。事实上深克隆只是浅克隆的嵌套使用,也就是说浅克隆只是让类实现 Cloneable 接口,深克隆则让类中的引用类型也实现了 Cloneable 接口,然后在重写后的 clone 方法中调用引用类型也重写过的的 clone 方法

实现深克隆的方式

  1. 实现 Cloneable 接口
  2. 序列化和反序列化

二、Object对象的常用方法

1.介绍


其实都是常用方法

看到 Object 类中的 clone() ,大家可能会跟我有一样的疑问,没关系我帮大家整理了答案

为什么 Object 类里有 clone(),还要实现 Cloneable 接口?

需要知道一点,Cloneable 接口和 Serializable 接口一样是标记接口,并没有定义任何方法,只是做了一个标记,如果不做这个标记,并且调用了 clone() ,就会抛出 CloneNotSupportedException

三、util包下的接口和类

1.介绍

常用接口

  1. Collection
    Collection 层次结构中的根接口
  2. Iterator
    Collection 的迭代器
  3. List
    有序的 Collection
  4. Map<K,V>
    将键映射到值的对象
  5. Map.Entry<K,V>
    映射项(键-值对)
  6. Set
    一个不包含重复元素的 Collection

常用类

  1. ArrayList
    List 接口的大小可变数组的实现
  2. Arrays
    此类包含用来操作数组(比如排序和搜索)的各种方法
  3. Collections
    此类完全由在 Collection 上进行操作或返回 Collection 的静态方法组成
  4. Date
    类 Date 表示特定的瞬间,精确到毫秒
  5. HashMap<K,V>
    基于哈希表的 Map 接口的实现
  6. HashSet
    此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持
  7. Random
    此类的实例用于生成伪随机数流
  8. Timer
    一种工具,线程用其安排以后在后台线程中执行的任务。与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务

参考链接

Java对象克隆——浅克隆和深克隆的区别

【重难点】【Java基础 06】浅克隆与深克隆、Object类的常用方法、util包下的接口相关推荐

  1. Java基础知识强化26:Object类之hashCode()方法、getClass()方法

    1. Object类的hashCode()方法,如下: public  int  hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的 ...

  2. java基础面试题之:String 类的常用方法都有那些?

    从对字符常规操作来看: 增-删改查 删:trim subString 改:valueOf toUpperCase toLowerCase 查:length indexOf charAt startsW ...

  3. php byte stringbuffer,重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结

    重拾java基础(十三):String姐妹StringBuffer.StringBuilder总结 一.StringBuffer类概述buffer:缓冲 2. 字符串缓冲区,跟String非常相似,都 ...

  4. [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别

    [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...

  5. Java中的浅克隆与深克隆

    Java中的浅克隆与深克隆 一:前言 二:浅克隆与深克隆的区别 一:前言 克隆,即复制一个对象,该对象的属性与被复制的对象一致,如果不使用Object类中的clone方法实现克隆,可以自己new出一个 ...

  6. JAVA基础-06.集合-14.【List、Set】

    01_数据结构_栈&队列 02_数据结构_数组 03_数据结构_链表 04_数据结构_红黑树 05_HashSet集合存储数据的结构(哈希表) 06_Set集合存储元素不重复的原理 day03 ...

  7. Java基础语法(九)——String类

    文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...

  8. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  9. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

最新文章

  1. python3 PIL、opencv, 二进制、base64 四种图片格式转换
  2. linux stress 命令 模拟系统高负载
  3. WCF Membership Provider
  4. Java设计模式(十二) 策略模式
  5. 9 HTML5之表单
  6. 设计模式 分类和原则
  7. BI Content、Metadata Repository
  8. HDU - 5452 Minimum Cut(LCA+树上差分)
  9. iar烧录程序步骤_STM8入门以及程序编译、烧录、IAR使用方法(扫盲篇...
  10. 【CodeForces - 460C】Present(二分+树状数组)
  11. pycharm 运行celery_Celery全面学习笔记
  12. PowerDesigner15使用时的十五个问题
  13. matlab mcc 安装,matlab中安装mcc
  14. 单IP无TMG拓扑Lync Server 2013:外部访问
  15. 计算机病毒是具有破坏性的程序6,2015年计算机二级MS Office习题及答案解析(6)
  16. war包的解压与打包
  17. python结课设计力学方面_课程设计心得
  18. 一键logo生成器_如何做海报?公众号封面图?logo?词云?试试这几个设计网站,用过的都说好!...
  19. 浏览器全屏相关常用代码
  20. MATLAB 中的randn函数

热门文章

  1. 多选题spss相关分析_【医学问卷分析】使用SPSS多重响应对医学问卷多选题进行统计分析——【杏花开医学统计】...
  2. linux查看网卡物理编号_Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡)...
  3. c++去除图片上的文字_图片文字修改去除方法
  4. NOIP模拟 color(DP)
  5. jQuery获取元素索引值index()方法
  6. FLIP-24+-+SQL+Client
  7. Windows请求连接 Vmware+Ubuntu14被拒绝 的幽怨诉说
  8. arguments.callee的临时指向特性
  9. linux 网络 PING IP可以通,ping域名ping不通
  10. android全系统动态二进制分析--CopperDroid