java.lang.Object是所有类的父类,默认继承,而且java.lang包下的所有类都由编译器自动导入,不需要显示import,因为用的多,提前加载可以提高运行时速度。
"=="与equals的区别要看equals是如何重写的,在Object中两者意义等同,都是判断引用地址是否相同。在String中equals比较的是内容。
//Objectpublic boolean equals(Object obj) { return (this == obj);}//Stringpublic boolean equals(Object anObject) { if (this == anObject) { return true; } return (anObject instanceof String aString) && (!COMPACT_STRINGS || this.coder == aString.coder) && StringLatin1.equals(value, aString.value);}public static boolean equals(byte[] value, byte[] other) { if (value.length == other.length) { for (int i = 0; i < value.length; i++) { if (value[i] != other[i]) { return false; } } return true; } return false;}
equals方法含义按需要重写,但需要满足Java规范:
(资料图片仅供参考)
在Java规范中,对equals方法的使用必须遵循以下几个原则:1)自反性。对于任何非空引用值x,x. equals(x)都应返回true。2)对称性。对于任何非空引用值x和y,当且仅当y. equals(x)返回true时,x.equals(y)才应返回true。3)传递性。对于任何非空引用值x、y和z,如果x. equals(y)返回true,并且y.equals(z)返回true,那么x. equals(z)应返回true。4)一致性。对于任何非空引用值x和y,多次调用x. equals(y)始终返回true或始终返回false,前提是对象上equals比较中所用的信息没有被修改。对于任何非空引用值x,x. equals(null)都应返回false。对于任何非空引用值x,x. equals(null)都应返回false。
hashCode是一个本地方法,用来加快equals比较,但两个不同对象的哈希值难免有冲突,hashCode和equals的关系如下:
如果equals返回true,则hashCode一定相等;如果equals返回false,则hashCode可能相等。也就是说如果hashCode不相等,那么equals一定不相等。注:Object中的hashCode方法返回的是对象的内存地址,有特殊要求可重写。
@IntrinsicCandidatepublic native int hashCode();
hashCode主要用于Map、Set等容器中,当向容器添加元素时需要去一个个比较是否有相等的元素,直接调用equals效率太慢。可以先比较hashCode,如果hashCode不一样则equals必然返回false,如果hashCode一样再调用equals比较。
wait方法也是Object类本地方法,一般用于synchronize代码块中,作用是释放锁并阻塞线程,唤醒方法是notify/notifyAll。
sleep方法是Thread类方法,调用了sleep0本地方法,作用是不释放锁但阻塞线程。
await方法是ConditionObject/ReentrantLock类的方法,作用是释放锁并阻塞线程,唤醒方法是signal/signalAll。
public final void wait() throws InterruptedException { wait(0L);}public final void wait(long timeoutMillis) throws InterruptedException { long comp = Blocker.begin(); try { wait0(timeoutMillis); } catch (InterruptedException e) { Thread thread = Thread.currentThread(); if (thread.isVirtual()) thread.getAndClearInterrupt(); throw e; } finally { Blocker.end(comp); }}// final modifier so method not in vtableprivate final native void wait0(long timeoutMillis) throws InterruptedException;public final void wait(long timeoutMillis, int nanos) throws InterruptedException { if (timeoutMillis < 0) { throw new IllegalArgumentException("timeoutMillis value is negative"); } if (nanos < 0 || nanos > 999999) { throw new IllegalArgumentException( "nanosecond timeout value out of range"); } if (nanos > 0 && timeoutMillis < Long.MAX_VALUE) { timeoutMillis++; } wait(timeoutMillis);}
public static void sleep(long millis) throws InterruptedException { if (millis < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (currentThread() instanceof VirtualThread vthread) { long nanos = MILLISECONDS.toNanos(millis); vthread.sleepNanos(nanos); return; } if (ThreadSleepEvent.isTurnedOn()) { ThreadSleepEvent event = new ThreadSleepEvent(); try { event.time = MILLISECONDS.toNanos(millis); event.begin(); sleep0(millis); } finally { event.commit(); } } else { sleep0(millis); }}private static native void sleep0(long millis) throws InterruptedException;
await具体细节请看Java多线程:条件变量
public final void await() throws InterruptedException { if (Thread.interrupted()) throw new InterruptedException(); ConditionNode node = new ConditionNode(); int savedState = enableWait(node);//加入条件队列 LockSupport.setCurrentBlocker(this); // for back-compatibility,将AQS对象设置到thread中 boolean interrupted = false, cancelled = false, rejected = false; while (!canReacquire(node)) {//如果被唤醒进入同步队列后就可以跳出循环 if (interrupted |= Thread.interrupted()) { if (cancelled = (node.getAndUnsetStatus(COND) & COND) != 0) break; // else interrupted after signal } else if ((node.status & COND) != 0) { try { if (rejected) node.block(); else ForkJoinPool.managedBlock(node);//阻塞线程,最终会调用LockSupport.park() } catch (RejectedExecutionException ex) { rejected = true; } catch (InterruptedException ie) { interrupted = true; } } else Thread.onSpinWait(); // awoke while enqueuing }//被唤醒 LockSupport.setCurrentBlocker(null); node.clearStatus();////lock.lock()方法:acquire(null, arg, false, false, false, 0L);//重新获取锁时已原来的savedState acquire(node, savedState, false, false, false, 0L);//重新获取锁,此时该节点已经进入了同步队列,有可能直接tryAcquire成功跳出循环,也可能需要两次循环修改node.status为WAITING、park。 if (interrupted) { if (cancelled) { unlinkCancelledWaiters(node); throw new InterruptedException(); } Thread.currentThread().interrupt(); }}
public class Object { @IntrinsicCandidate public Object() {} @IntrinsicCandidate public final native Class> getClass();//返回类对象用于反射 @IntrinsicCandidate public native int hashCode(); public boolean equals(Object obj) { return (this == obj); } @IntrinsicCandidate protected native Object clone() throws CloneNotSupportedException; public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } @IntrinsicCandidate public final native void notify(); @IntrinsicCandidate public final native void notifyAll(); public final void wait() throws InterruptedException { wait(0L); } public final void wait(long timeoutMillis) throws InterruptedException { long comp = Blocker.begin(); try { wait0(timeoutMillis); } catch (InterruptedException e) { Thread thread = Thread.currentThread(); if (thread.isVirtual()) thread.getAndClearInterrupt(); throw e; } finally { Blocker.end(comp); } } // final modifier so method not in vtable private final native void wait0(long timeoutMillis) throws InterruptedException; public final void wait(long timeoutMillis, int nanos) throws InterruptedException { if (timeoutMillis < 0) { throw new IllegalArgumentException("timeoutMillis value is negative"); } if (nanos < 0 || nanos > 999999) { throw new IllegalArgumentException( "nanosecond timeout value out of range"); } if (nanos > 0 && timeoutMillis < Long.MAX_VALUE) { timeoutMillis++; } wait(timeoutMillis); } @Deprecated(since="9", forRemoval=true) protected void finalize() throws Throwable { }}
标签: Java JavaScript
上一篇 : 锂价理性回调 镍价震荡回温 全球微速讯
下一篇 : 最后一页
DataFlowManager(DFM)是NiFi用户,具有添加,删除和修改NiFi数据流组件的权限。
02-22 18:58:54
青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...
02-22 16:56:14
一、缓刑具体怎么执行缓刑具体的执行方式如下:1 缓刑判决从依法确定之日起,人民法院就应当立即交付执...
02-22 13:11:24
曾因为染“粉红色头发”在去年7月受到网暴的女孩郑某,最终没能从网络暴力的阴影中走出来,选择了轻生。...
02-22 10:50:47
手机厂商再打价格战,2023不再平静,行业会被颠覆吗?,红米,友商,性价比,一加手机,手机厂商,智能手机
02-22 09:02:46
1、湛江安康房地产开发有限公司开发的安康“金海湾”住宅小区。本文到此分享完毕,希望对大家有所帮助。
02-22 06:57:53
13岁就加入《我爱黑涩会》站在荧光幕前的女星郑靓歆(Jin),去年在节目《全明星运动会》中表现亮眼,获...
02-22 02:01:52
青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...
02-21 21:51:41
*ST必康公告,公司控股子公司江苏九九久科技有限公司计划在现有的年产5,000吨六氟磷酸锂装置的基础上进...
02-21 19:14:59
根据区、街道对生活垃圾分类管理工作常态化管理相关要求,依据生活垃圾分类第三方实效测评相关问题情况...
02-21 17:49:44
人民网成都2月21日电(朱虹)今日,四川省森林草原防灭火指挥部在凉山州冕宁县举行四川省森林草原火灾应...
02-21 16:06:24
长江支流九曲河“河堤损毁多年无人修”?回应来了!
02-21 14:15:13
存在绕颈风险!国誉商业(上海)有限公司召回部分KOKUYO牌点点胶
02-21 12:12:42
去年7月,杭州女孩郑灵华因一头粉色头发成为焦点,随后遭遇大规模网
02-21 10:10:25
“股价挂钩薪酬”致员工收入大幅波动,亚马逊:薪酬模式让目光长远者获益:据市场消息,亚马逊向企业员...
02-21 08:38:35
解答:1、在浏览器中找到官网进入中小学教师资格考试网,找到官网进入。2、进入注册系统,点击右下角的...
02-21 04:41:47
1、百世金谷·燕郊空港物流国际产业基地项目,由三河市燕郊空港物流有限公司投资兴建,项目位于三河市燕...
02-21 00:39:09
台湾经济事务主管部门20日公布1月外销订单统计,订单金额为475 1亿美元,同比减少19 3%,为连续第五个...
02-20 20:49:56
黄平:仪式感满满萌娃开学现场暖翻天
02-20 18:28:28
文投控股(600715)12月30日在投资者关系平台上答复了投资者关心的问题。
02-20 16:22:29
券商启动牛市来了吗后期关注一点今天大盘在周末消息面偏向利好的刺激下,两市大盘高开高走,盘中工程机...
02-20 14:56:09
插卡对讲机的是通网络所使用的,是能够完成全国各地对讲的,不受距离限制(有信号的情况下)。普通无卡...
02-20 12:06:44
1、哥哥我为了找这个悬赏都提高到110了~~~~你要是想要起码给60分吧顺便说下我已经找到了楼下发的是98年
02-20 10:10:30
江西省湖口县近年打造各具特色的科普教育基地,通过沉浸式体验,增加科普趣味,激发创新潜能,让更多学...
02-20 08:41:58
近期,“减负”成为基金圈新的流行词,多位知名基金经理通过增聘、卸任产品等方式进行“减负”,持续引...
02-20 06:02:14
夏弥来为大家解答以下的问题,千纸鹤的寓意,说一说千纸鹤的寓意的简介,现在让我们一起来看看吧!1、千...
02-20 00:53:22
亲属。相鼠腐年出生的男人,眼光独到,才华出众。他们在生活中非常感性,和他们一起生活会让生活充满活...
02-19 20:59:49
据《每日快报》报道,在展望下周对利物浦的欧冠16强战第一回合时,皇马中场老将莫德里奇坦言,他对红军...
02-19 17:03:50
首先我要介绍的是Sa-Token,可能是史上功能最全的轻量级Java权限认证框架。简单的使用方式,丰富的特性...
02-19 14:14:05
北京体彩赢下“京津对决”收获手超联赛三明站开门红
02-19 11:14:07
自诩“人权灯塔”美国童工问题成灯下黑---美国劳工部2月17日说,该部门调查发现美国一家大型食品安全卫...
02-19 09:05:08
1、无线固话其实就是无绳电话,但是它与手机不同,它接收信号的范围很小,通常只在室内使用。2、无绳电...
02-19 05:03:49
兰州中川国际机场三期扩建工程航站楼工程主体结构顺利合拢
02-19 00:08:53
iOS16 4Beta更新,以后不能随意升级测试版了
02-18 20:40:40
1、常言说:“三岁看大,七岁看老。2、”这话有一定科学道理。3、幼儿时期是身心发展的重要时期,孩子的...
02-18 17:39:12
“中山发布”微信公众号消息,11月24日0-14时,中山市报告2例新冠肺炎确诊病例(轻型)和7例新冠病毒无...
02-18 14:54:42
1、第一步,在纸上画一个小鱼的嘴。嘴的前部有点像心脏。2、然后画鱼的身体和尾巴,把小鱼的身体画得胖...
02-18 12:03:19
高能量食物、肥胖和近乎成瘾的强迫性食物摄入:多年来,科学文献一直指出这两者之间的联系。CNRS和巴黎...
02-18 09:08:35
1、想必大家对个体营业执照都不陌生。想自己创业,符合企业登记条件的,办理企业营业执照,符合个体登记...
02-18 06:47:50
2月17日,银华阿尔法混合最新单位净值为0 9111元,累计净值为0 9111元,较前一交易日下跌0 75%。历史...
02-18 02:09:49
特斯拉疑似失控事故再发,警方通报致1死1伤
02-17 21:58:57
你需要的东西2码带图案的抓绒面料2码纯棉面料缝纫机线布料剪刀别针12英寸1英寸宽丝带给幼儿园垫子盖上盖...
02-17 19:56:15
1 说话急切。2 (愉快地)说出来。3 说话(虚张声势)。4 说话(没有耐心)。5 说话不耐烦。6 轻声说话。7、(骂人
02-17 18:07:57
——ZAKER,个性化推荐热门新闻,本地权威媒体资讯
02-17 16:20:33
双飞股份11月30日在互动平台表示,公司产品间接配套于新能源车企。从销售部门提供的数据,公司目前新能...
02-17 14:53:03
追寻梦想,不留遗憾!崇左这14名小姐姐进入征兵体检考评阶段
02-17 12:17:17
食品饮料股17日盘中发力拉升,乳业股表现活跃,截至发稿,麦趣尔涨停,熊猫乳品涨约7%,新乳业涨近6%,...
02-17 11:00:23
夏弥来为大家解答以下的问题,太阳鸟,说一说太阳鸟的简介,现在让我们一起来看看吧!1、雀形目、太阳鸟...
02-17 05:40:24
1、徐青巍,男,汉族。2、1975年5月出生,2000年毕业于天津美术学院油画专业,2000年起在青岛大学工作。3
02-17 01:00:07
1、我爱罗星5生命,2720攻击,489防晕,27七元妹子组队特玛里生命加成50%,朋友组队鸣人Uzumaki攻击加成5
02-16 21:09:02
DataFlowManager(DFM)是NiFi用户,具有添加,删除和修改NiFi数据流组件的权限。
2023-02-22
青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...
2023-02-22
一、缓刑具体怎么执行缓刑具体的执行方式如下:1 缓刑判决从依法确定之日起,人民法院就应当立即交付执...
2023-02-22
曾因为染“粉红色头发”在去年7月受到网暴的女孩郑某,最终没能从网络暴力的阴影中走出来,选择了轻生。...
2023-02-22
手机厂商再打价格战,2023不再平静,行业会被颠覆吗?,红米,友商,性价比,一加手机,手机厂商,智能手机
2023-02-22
7月7日,中国消费者协会、中国保健协会化妆品发展工作委员会联合发布暑期消费指示,保障儿童用妆安全。...
概念特点1、 定义:纤维是天然或人工合成的细丝状物质,纺织纤维则是指用来纺织布的纤维。2、 纺织纤...
中新网西宁11月21日电 题:青海水润高原:从“大动脉”到“毛细血管”的精准管理 作者 谈林明...
中新网西宁11月21日电 (记者 张添福)青海省卫生健康委员会21日消息,该省第3例本土确诊病例经过20...
新华社华盛顿11月20日电 通讯:“留在中国的决定让我拥有一段值得讲述的人生”——留华美国学生韩...
上市公司频获机构调研 接待机构来访量为20.89万家
Copyright © 2015-2022 华中纤维网版权所有 备案号:京ICP备12018864号-26 联系邮箱:2 913 236 @qq.com