【重难点】【Java基础 06】浅克隆与深克隆、Object类的常用方法、util包下的接口
【重难点】【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 方法
实现深克隆的方式
- 实现 Cloneable 接口
- 序列化和反序列化
二、Object对象的常用方法
1.介绍
其实都是常用方法
看到 Object 类中的 clone() ,大家可能会跟我有一样的疑问,没关系我帮大家整理了答案
为什么 Object 类里有 clone(),还要实现 Cloneable 接口?
需要知道一点,Cloneable 接口和 Serializable 接口一样是标记接口,并没有定义任何方法,只是做了一个标记,如果不做这个标记,并且调用了 clone() ,就会抛出 CloneNotSupportedException
三、util包下的接口和类
1.介绍
常用接口
- Collection
Collection 层次结构中的根接口 - Iterator
Collection 的迭代器 - List
有序的 Collection - Map<K,V>
将键映射到值的对象 - Map.Entry<K,V>
映射项(键-值对) - Set
一个不包含重复元素的 Collection
常用类
- ArrayList
List 接口的大小可变数组的实现 - Arrays
此类包含用来操作数组(比如排序和搜索)的各种方法 - Collections
此类完全由在 Collection 上进行操作或返回 Collection 的静态方法组成 - Date
类 Date 表示特定的瞬间,精确到毫秒 - HashMap<K,V>
基于哈希表的 Map 接口的实现 - HashSet
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持 - Random
此类的实例用于生成伪随机数流 - Timer
一种工具,线程用其安排以后在后台线程中执行的任务。与每个 Timer 对象相对应的是单个后台线程,用于顺序地执行所有计时器任务
参考链接
Java对象克隆——浅克隆和深克隆的区别
【重难点】【Java基础 06】浅克隆与深克隆、Object类的常用方法、util包下的接口相关推荐
- Java基础知识强化26:Object类之hashCode()方法、getClass()方法
1. Object类的hashCode()方法,如下: public int hashCode():返回该对象的哈希码值,这个值和地址值有关,但是不是实际地址值(哈希码值是根据实际地址值转化过来的 ...
- java基础面试题之:String 类的常用方法都有那些?
从对字符常规操作来看: 增-删改查 删:trim subString 改:valueOf toUpperCase toLowerCase 查:length indexOf charAt startsW ...
- php byte stringbuffer,重拾java基础(十三):String姐妹StringBuffer、StringBuilder总结
重拾java基础(十三):String姐妹StringBuffer.StringBuilder总结 一.StringBuffer类概述buffer:缓冲 2. 字符串缓冲区,跟String非常相似,都 ...
- [重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别
[重学Java基础][Java IO流][Exter.2]IO流中几种不同的读写方法的区别 Read 读入方法 read(): 一般是这种形式 public int read() 1.从流数据中读取的 ...
- Java中的浅克隆与深克隆
Java中的浅克隆与深克隆 一:前言 二:浅克隆与深克隆的区别 一:前言 克隆,即复制一个对象,该对象的属性与被复制的对象一致,如果不使用Object类中的clone方法实现克隆,可以自己new出一个 ...
- JAVA基础-06.集合-14.【List、Set】
01_数据结构_栈&队列 02_数据结构_数组 03_数据结构_链表 04_数据结构_红黑树 05_HashSet集合存储数据的结构(哈希表) 06_Set集合存储元素不重复的原理 day03 ...
- Java基础语法(九)——String类
文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- 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 ...
最新文章
- python3 PIL、opencv, 二进制、base64 四种图片格式转换
- linux stress 命令 模拟系统高负载
- WCF Membership Provider
- Java设计模式(十二) 策略模式
- 9 HTML5之表单
- 设计模式 分类和原则
- BI Content、Metadata Repository
- HDU - 5452 Minimum Cut(LCA+树上差分)
- iar烧录程序步骤_STM8入门以及程序编译、烧录、IAR使用方法(扫盲篇...
- 【CodeForces - 460C】Present(二分+树状数组)
- pycharm 运行celery_Celery全面学习笔记
- PowerDesigner15使用时的十五个问题
- matlab mcc 安装,matlab中安装mcc
- 单IP无TMG拓扑Lync Server 2013:外部访问
- 计算机病毒是具有破坏性的程序6,2015年计算机二级MS Office习题及答案解析(6)
- war包的解压与打包
- python结课设计力学方面_课程设计心得
- 一键logo生成器_如何做海报?公众号封面图?logo?词云?试试这几个设计网站,用过的都说好!...
- 浏览器全屏相关常用代码
- MATLAB 中的randn函数
热门文章
- 多选题spss相关分析_【医学问卷分析】使用SPSS多重响应对医学问卷多选题进行统计分析——【杏花开医学统计】...
- linux查看网卡物理编号_Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡)...
- c++去除图片上的文字_图片文字修改去除方法
- NOIP模拟 color(DP)
- jQuery获取元素索引值index()方法
- FLIP-24+-+SQL+Client
- Windows请求连接 Vmware+Ubuntu14被拒绝 的幽怨诉说
- arguments.callee的临时指向特性
- linux 网络 PING IP可以通,ping域名ping不通
- android全系统动态二进制分析--CopperDroid