时间:2021-05-19
导读: 在平时的coding中hashCode()和equals()的使用的场景有哪些?clone深复制怎么实现?wait()和notify()有什么作用?finalize()方法干嘛的?看似coding中使用的不多,不重要,但是有没有跟我一样,想好好的了解一下的。毕竟是基础中的基础。
下面给出一个简单比较全面的概要:
1. hashCode()和equals()
public boolean equals(Object obj) {return (this == obj);}
public native int hashCode();
1.当equals()方法被override时,hashCode()也要被override.
2.当equals()返回true,hashcode一定相等。即:相等(相同)的对象必须具有相等的哈希码(或者散列码)
3.如果两个对象的hashCode相同,它们并不一定相同。
4.在集合查找时,hashcode能大大降低对象比较次数,提高查找效率!
在判断重复元素时,直接通过hashcode()方法,定位到桶位置,如果该位置有元素,再调用equals()方法判断是否相等。而不是遍历每一个元素比较equals()!
2. clone() 深复制
public class Animal implements Cloneable { private int height; private int age; public Animal(int height, int age){ this.height = height; this.age = age; } @Override public Object clone() throws CloneNotSupportedException { return super.clone(); }}public class People implements Cloneable { private int height; private int age; private Animal a; public People(int height, int age,Animal a){ this.height = height; this.age = age; this.a = a; } @Override public Object clone() throws CloneNotSupportedException { People p = (People) super.clone(); p.a = (Animal) a.clone(); return p; }}Animal a1 = new Animal(100,3);People p1 = new People(173,24,a1);//深复制People p2 = (People) p1.clone();3. wait()和notify()
•只有获得该对象锁之后才能调用,否则抛IllegalMonitorStateException异常
•任何一个时刻,对象的控制权(monitor)只能被一个线程拥有。
线程取得控制权的方法有三:
1. 执行对象的某个同步实例方法。
2. 执行对象对应类的同步静态方法。
3. 执行对该对象加同步锁的同步块。
执行对该对象加同步锁的示例:
synchronized (pepoleObject) { pepoleObject.notifyAll(); pepoleObject.wait(); }4. finalize()
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾加收器调用此方法,只能调用一次。当对象被回收时需要配置系统资源或执行其他清除,子类重写finalize方法实现。
以上这篇关于Java Object你真的了解了吗就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
直通车作为推广引流的神器,如果卖家们能够好好利用的话,能够帮助店铺获得更多精准有效的流量,从而大大提升网店的转化率,但是对于直通车功能,你真的全部都了解了吗?直
在Java基础教程之从HelloWorld到面向对象一文中,我们初步了解了对象(object)。对象中的数据成员表示对象的状态。对象可以执行方法,表示特定的动作
想必大家在运营店铺之前,肯定都会提前对卖的商品市场去做一个简单的了解和调查。但是市场调查需要了解哪些方面的信息,你真的知道吗?你做对了吗?你的行业分析真的准确吗
最近一直在准备面试,为了使自己的Java水平更上一个档次,拜读了李林峰老师的《Netty权威指南》,了解了Java关于IO的发展和最新的技术,真是受益匪浅,现在
问:什么是Object类?答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类。当然,数组也继承了Object类。然