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
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
相关文章推荐
- java克隆对象clone()的使用方法和作用
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- 为什么要重写java中对象的equals方法和hashCode方法以及如何重写
- Java案例:使用clone()方法克隆对象
- java下Class.forName的作用是什么,为什么要使用它(和new对象的区别)
- 关于Java对象复制(Clone、深度Clone以及序列化与反序列化的使用)
- JAVA克隆详解以及clone方法使用
- JAVA 复制对象时为什么要用克隆clone()而不用“=”的原因
- 细说java面试“=="和"equals"方法的区别以及常量池的概念及使用
- js中对象复制以及apply方法的使用
- 由java ==和equals区别引出的对象以及对象的引用等相关概念。转载
- java clone()方法使用解析以及深/浅拷贝
- 如何复制一个java对象(浅克隆与深度克隆)
- final和static使用的再思考,以及其在“类.方法”和“对象.方法”使用方式上的的区别
- Java 深度克隆 clone()方法重写 equals()方法的重写
- java String对象中‘==’,equals与compareTo函数的使用和区别
- 通过实现Cloneable接口和覆盖clone()方法实现深度克隆,以及如何通过ByteArrayIOStream实现克隆
- 【JAVA学习】java中==、equals()、hashCode()都和对象的比较有关,在java中这三者各有什么用处呢,即java中为什么需要设计这三种对象的比较方法呢?
- JAVA 对象序列化(三)——transient以及Externalizable的一种替代方法(使用Serializable)
- 两个JSP页面之间如何传递一个对象?比如一个LIST或者HASHMAP?以及为什么有时候REQUEST.GETATTRIBUTE("NAME")取不到值?