您的位置:首页 > 编程语言 > Java开发

java中equals和==之间的区别?clone方法的作用,及其为什么要使用clone方法?如何使用clone复制对象?以及深克隆浅克隆

2018-03-13 21:52 1421 查看
在选择是否原创时,我选择了原创,当然这些内容是我们高博的老师讲的,但是确实我一个字一个字打出来的,也算是我的理解吧。
1.“==”在进行数据比较时, 如果数据是基本数据类型,比较的是数据的值;如果数据是引用类型,“==”比较的是对象的内存地址。equals方法,在比较数据是否相同时,只能比较引用类型,所在Object类类中,equals方法额实现,是比较内存直至,如果我们想要比较对象的值,必须重写equals方法,给予比较的标准。在重写equals的同时,也要重写hashCode方法。
2.clone方法的作用,及其为什么要使用clone方法
clone方法是在复制一个对象,赋值的对象是单独独立的,有独自的内存空间。

clone方法是java中顶层父类Object中的一个方法,此方法在java中为实现,是一个native方法,也就是本地方法(可以调用底层操作系统的方法),在调用本地方法创建对象,比直接new创建对象效率高。
3、如何使用clone复制对象?
在使用clone方法创建对象时,必须实现一个接口:Cloneable,此接口没有任何方法,是一个标识接口。由于Object类中,clone方法的权限修饰是protected,所以我们在克隆对象时,被克隆的对象要重写克隆方法。并且将权限修改成public,在别的地方可以调用这个克隆方法。
         克隆分为:
         * 浅克隆,在clone对象时,只会把基本数据类型的数据进行复制过去;如果是引用类型,只会把引用复制过去,也就是被克隆对象和原始对象信息,共同引用一个引用类型的属性。
         * 深克隆:在克隆时,会把基本数据类型的数据和引用类型的数据,同时复制。克隆对象和原始对象不共同引用一个引用类型
          缺点:在深克隆时,如果引用对象关系比较复杂,克隆时会很麻烦,因为每一个对象都要克隆。
          解决方案:可以使用序列化进行解决。

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐