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
上一篇 : 锂价理性回调 镍价震荡回温 全球微速讯
下一篇 : 俄乌战事的另一面:一场全方位的舆论战_每日视点
在六大国有大行集体宣布下调存量房贷利率的具体政策后,大多数股份行以
09-09 13:38:34
比赛中,内马尔上演了精彩过人但射门被扑出的一幕,这个球也是内马尔职
09-09 11:42:41
当初有多嚣张,现在就有多后悔。临沂“亮证”女子认怂了,她跑去向理发
09-09 10:08:02
9月5日,住建部办公厅发布关于工程建设强制性国家规范《太阳能发电工程
09-09 08:25:55
引言:揭开美团背后的劳动外包现象,探寻其价值所在。美团作为一家精细
09-09 05:55:33
您好,现在蔡蔡来为大家解答以上的问题。怎么用酷狗音乐来剪辑制作歌曲
09-09 00:45:21
9月8日长白山召开中报业绩说明会,2023上半年公司实现营收亿元,同比增
09-08 21:32:41
中泰化学(002092)09月08日在投资者关系平台上答复了投资者关心的问题。
09-08 20:53:17
首先是比赛非常密集,国乒球员们一天3赛,甚至4赛都是常事,比如9月8日
09-08 18:41:49
对医保移动支付这项事关患者切身感受的工作,既要加快推进,更要坚持系
09-08 17:10:10
据农业农村部监测,9月8日 "农产品批发价格200指数 "为121 62,比昨天
09-08 16:22:06
9月7日,全球环境科学家大会暨第七次全球环境展望第二次作者研讨会主论
09-08 15:00:09
9月8日晚8点,京东“9 9超省日”即将全面开启。作为京东全新打造的
09-08 14:03:52
OPEC+减产以及沙特和俄罗斯的延长减产一度推高油价至2023年90美元 桶以
09-08 12:26:12
9月7日凌晨3时许,甘肃省甘南藏族自治州夏河县达麦乡和麻当镇发生山洪
09-08 11:20:25
9月6日,《融贯东西的典范——敦煌文化主题展》在甘肃敦煌开展。该展览
09-08 10:35:51
格隆汇9月8日丨天赐材料002709002709SZ公布公司于2022年4月13日召开了
09-08 09:53:41
南铁继续调整列车运行方案-
09-01 10:27:30
阴天飞机能正常起飞,主要的限制因素是能见度(或跑道视程)与云底高。
09-01 09:17:57
8月30日,在奥地利维也纳交通博物馆,观众模拟体验地铁列车驾驶。
09-01 09:01:40
8月25日,华夏银行股份有限公司(以下简称“华夏银行”,600015 SH)发
09-01 07:28:27
题:亚洲制造业论坛秘书长罗军:制造业由大做强需做好三方面工作
09-01 05:30:56
环球汽车7月消息小杨来为大家解答以上问题,现在柴犬价格是多少怎么样
09-01 00:56:12
8月30日至31日,由新疆维吾尔自治区人民政府、国家中医药管理局共同主
08-31 21:35:48
卸货、分发、装车、配送……每年的开学季,都能看到出版、发行人忙碌的
08-31 20:08:36
利伟生物2023年上半年净利-243 05万亏损增长62 64%2023 8 3118:38:11挖
08-31 18:32:47
格隆汇8月31日丨保利文化(03636 HK)发布公告,截至2023年6月30日止六个
08-31 17:43:02
招聘岗位警务辅助人员:6名(限男性)招聘条件1、自愿从事辅警工作,乐于
08-31 16:37:44
在普安县茶源街道,提起冉家四姐妹冉应欢、冉桂琴、冉琴、冉敏,人人都
08-31 15:18:32
新华社圣彼得堡8月30日电(记者安晓萌)俄罗斯第32届国际农业工业展30
08-31 14:10:40
8月31日上午,2023年中国农民丰收节吉祥物和LOGO正式发布。今年中国农
08-31 12:45:33
今天(8月31日),今年第9号台风“苏拉”继续逼近广东沿海。受其影响,
08-31 11:14:12
本草撮要>> 卷五 五谷部刀豆味甘温。入手足阳明经。功专温中下气
08-31 10:14:26
一我们大院里,曾经有一对夫妇,男的是一位工程师,女的是一位中学老师
08-31 09:06:11
8月30日,华为云盘古大模型主题论坛在北京召开,华为云宣布将全面建设
08-31 08:02:53
蚊媒传染病,是指由蚊子传播的自然疫源性疾病,常见的有流行性乙型脑炎
08-31 06:30:48
相信大家对内嵌式冰箱插座,冰箱用多大的插座的问题都很疑惑,这个问题
08-31 02:56:24
体坛加,体坛+,天谭,山东泰山,北京国安,足协杯,崔康熙:精神战术都做好
08-30 22:37:45
1 你可以用一分钟遇见一个人,用一小时了解一个人,用一天爱上一个人,
08-30 20:58:17
“海粉儿之家”成立以来,粉丝的热情一浪高过一浪,这几天后台留言不断
08-30 19:48:06
据中国新闻网消息:湖北省纪委监委网站8月30日通报,中超公司董事长刘
08-30 18:32:33
沈阳市公安局30日发布消息称,沈阳警方近日经过缜密侦查、集中收网,破
08-30 17:13:20
每经AI快讯,有投资者在投资者互动平台提问:光模块的散热基座跟公司生
08-30 15:59:28
深度独立穿透取予有节,出入有时!作者:陈晚邻编辑:李明达风品:南辞
08-30 14:40:35
近期把欧洲转会市场搅得天翻地覆的沙特人又搞出了大名堂!沙特足协当地
08-30 13:44:50
产业园区招商引资是一个复杂而关键的过程。在全球经济高度竞争的环境下
08-30 12:16:25
8月29日,微信正式发布iOS平台的8 0 41版本更新。官方更新日志显示,此
08-30 11:06:10
在北京冬奥会迎来开幕倒计时30天之际,北京冬奥组委新闻发言人赵卫东5
08-30 09:59:34
金沃股份融资融券信息显示,2023年8月29日融资净偿还万元;融资余额万
08-30 08:43:59
08月29日,南京熊猫获沪股通增持万股,最新持股量为万股,占公司A股总
08-30 07:39:22
在六大国有大行集体宣布下调存量房贷利率的具体政策后,大多数股份行以
2023-09-09
比赛中,内马尔上演了精彩过人但射门被扑出的一幕,这个球也是内马尔职
2023-09-09
当初有多嚣张,现在就有多后悔。临沂“亮证”女子认怂了,她跑去向理发
2023-09-09
9月5日,住建部办公厅发布关于工程建设强制性国家规范《太阳能发电工程
2023-09-09
引言:揭开美团背后的劳动外包现象,探寻其价值所在。美团作为一家精细
2023-09-09
7月7日,中国消费者协会、中国保健协会化妆品发展工作委员会联合发布暑期消费指示,保障儿童用妆安全。...
概念特点1、 定义:纤维是天然或人工合成的细丝状物质,纺织纤维则是指用来纺织布的纤维。2、 纺织纤...
中新网西宁11月21日电 题:青海水润高原:从“大动脉”到“毛细血管”的精准管理 作者 谈林明...
中新网西宁11月21日电 (记者 张添福)青海省卫生健康委员会21日消息,该省第3例本土确诊病例经过20...
新华社华盛顿11月20日电 通讯:“留在中国的决定让我拥有一段值得讲述的人生”——留华美国学生韩...
上市公司频获机构调研 接待机构来访量为20.89万家
Copyright © 2015-2022 大河纤维网版权所有 备案号:京ICP备2022022245号-75 联系邮箱:435 226 40@qq.com