焦点讯息:Java基础类源码分析:Object

1 大纲

java.lang.Object是所有类的父类,默认继承,而且java.lang包下的所有类都由编译器自动导入,不需要显示import,因为用的多,提前加载可以提高运行时速度。

image.png

2 equals方法

"=="与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。

3 hashCode方法

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比较。

image.png

4 wait

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();    }}

5 附录

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

天天速看:大数据NiFi(十七):NiFi术语

DataFlowManager(DFM)是NiFi用户,具有添加,删除和修改NiFi数据流组件的权限。

02-22 18:58:54

阳了应该怎么办-阳性感染者如何用药 02月22日14时广东汕头疫情数据 最资讯

青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...

02-22 16:56:14

【全球报资讯】缓刑具体怎么执行

一、缓刑具体怎么执行缓刑具体的执行方式如下:1 缓刑判决从依法确定之日起,人民法院就应当立即交付执...

02-22 13:11:24

面对网暴,本不该无力

曾因为染“粉红色头发”在去年7月受到网暴的女孩郑某,最终没能从网络暴力的阴影中走出来,选择了轻生。...

02-22 10:50:47

手机厂商再打价格战,2023不再平静,行业会被颠覆吗?-当前通讯

手机厂商再打价格战,2023不再平静,行业会被颠覆吗?,红米,友商,性价比,一加手机,手机厂商,智能手机

02-22 09:02:46

安康金海湾_全球新要闻

1、湛江安康房地产开发有限公司开发的安康“金海湾”住宅小区。本文到此分享完毕,希望对大家有所帮助。

02-22 06:57:53

模仿影片导致尾椎裂伤,女星郑靓歆呼吁大家不要随意尝试该动作

13岁就加入《我爱黑涩会》站在荧光幕前的女星郑靓歆(Jin),去年在节目《全明星运动会》中表现亮眼,获...

02-22 02:01:52

阳了应该怎么办-阳性感染者如何用药 02月21日20时山东淄博疫情数据

青壮年一般高烧阶段不超过3天,到第4、第5天会明显好转。如高烧持续3天以上,且没有缓解趋势,建议前往...

02-21 21:51:41

*ST必康子公司拟投资年产3.5万吨六氟磷酸锂和1万吨六氟磷酸钠等产品扩建项目-世界头条

*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牌点点胶

存在绕颈风险!国誉商业(上海)有限公司召回部分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

麻将幻想曲3手机版_麻将幻想曲3_天天资讯

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

每日信息:对老婆负责、负责、贴心、最放心的3星座男人

亲属。相鼠腐年出生的男人,眼光独到,才华出众。他们在生活中非常感性,和他们一起生活会让生活充满活...

02-19 20:59:49

莫德里奇:皇马利物浦联赛踢得都不好,会防范红军在欧冠打出反弹-最新消息

据《每日快报》报道,在展望下周对利物浦的欧冠16强战第一回合时,皇马中场老将莫德里奇坦言,他对红军...

02-19 17:03:50

9 个 yyds 的 Java 项目,可应对各种私活!

首先我要介绍的是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更新,以后不能随意升级测试版了

iOS16 4Beta更新,以后不能随意升级测试版了

02-18 20:40:40

三岁看大七岁看老的科学依据_三岁看大七岁看老

1、常言说:“三岁看大,七岁看老。2、”这话有一定科学道理。3、幼儿时期是身心发展的重要时期,孩子的...

02-18 17:39:12

11月24日014时,广东中山新增2例确诊病例和7例无症状感染者-世界视讯

“中山发布”微信公众号消息,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.75%

2月17日,银华阿尔法混合最新单位净值为0 9111元,累计净值为0 9111元,较前一交易日下跌0 75%。历史...

02-18 02:09:49

全球短讯!特斯拉疑似失控事故再发,警方通报致1死1伤

特斯拉疑似失控事故再发,警方通报致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

想当豪华 MPV 新老大,腾势 D9 销量暴涨是靠运气?_热头条

——ZAKER,个性化推荐热门新闻,本地权威媒体资讯

02-17 16:20:33

双飞股份:公司产品间接配套于新能源车企,目前新能源汽车订单同比增多

双飞股份11月30日在互动平台表示,公司产品间接配套于新能源车企。从销售部门提供的数据,公司目前新能...

02-17 14:53:03

追寻梦想,不留遗憾!崇左这14名小姐姐进入征兵体检考评阶段

追寻梦想,不留遗憾!崇左这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

讯息:js 获取属性_百万手办王我爱罗获取方法及属性介绍

1、我爱罗星5生命,2720攻击,489防晕,27七元妹子组队特玛里生命加成50%,朋友组队鸣人Uzumaki攻击加成5

02-16 21:09:02

仙林中网红新盘,案名正式公布|总价约220万起!震撼南京市场! 天天微头条
何小冰:黄金大跌后的空间修正,原油守低看续涨 02.16 热文
环球微资讯!因故障抢修,16日下午北京房山区这片区域停电
每日资讯:临颍县人民政府办公室关于临颍县金铭智能家居产业园等7个项目用地有关问题的通知
全球今日讯!税惠春风推动陈皮行业一路“狂飙”
不折不挠_关于不折不挠的介绍 环球热头条
歌后何静:前夫高大林出轨,二婚嫁诈骗犯,星途尽丧 天天新动态
鼻子看相 二十种鼻形大全图解_每日消息
强制平仓是怎么回事-当前独家
每日消息!女人梦见自己坐飞机是什么意思
校企合作 共谋山西文旅高质量发展
东方红一号发射成功的时间中国第一颗卫星发射时间
lol怎么申请资格玩体验服_有什么操作步骤|视焦点讯
有才无德短句完整版_有才无德 世界时讯
云南红塔银行属于什么银行
ChatGPT概念再迎爆发,三六零涨超9%,软件ETF(515230)涨超2%,年内涨幅超20% 全球快播报
全球观察:热血传奇名字 热血传奇游戏名字推荐
如何用卫生纸制作木乃伊装 天天新动态
全球热资讯!如何擦干兔脚
qq空间免费在线刷人气网页版的方法|全球要闻
你想要的都有,创业第一台车就选哈弗M6 PLUS_焦点速看
世界快资讯:合创汽车与巨湾技研战略合作签约
蓝色妖姬的花语含义是什么 世界热文
家放什么旺家_家里放什么摆件聚财旺家
春蚕到死丝方尽打一成语_环球即时
胜芳_说一说胜芳的简介
信息:去海南岛旅游需要注意什么
【焦点热闻】如何看待越南经济高增长奇迹?
天天讯息:2023广州长隆欢乐世界小孩门票多少钱一张
教师资格考试中素质教育和应试教育的区别 天天热消息
让书香飘洒在“一带一路”
羊肚菌怎么泡发清洗_羊肚菌怎么泡发和清洗
今日讯!韩式烤肉在家吃的做法
联想小新笔记本 2023 春季新品全系配置公布,三大系列各有所长
出的反义词是什么的近义词|世界热议
受受的男生是什么意思_受受的男生 天天新资讯
2020进博会上海放假吗 期间公众休息日将不作调整|全球微速讯
送长辈生日祝福语_环球关注
环球热文:清代家具研讨之四 | 学海遗珍
环球时讯:立案庭主要职责_法院立案庭的职责有哪些
环球快播:工学博士写论文_工学博士
外围电子是什么-当前速讯
3998笔交易已完成 烟台市蓬莱区助推中介服务再升级-环球观热点
描写人物品质的词语
北京:新冠疫情态势总体保持平稳,监测预警体系运行良好 世界今日讯
金乡开展春季禁毒宣传_全球聚焦
每日看点!广济药业(000952)2月13日主力资金净买入499.16万元
福州大学厦门工艺美术学院|世界报道
深入探讨软件定义架构及其意义
环球消息!什么波浪填词语
x 广告
x 广告

Copyright ©  2015-2022 华中纤维网版权所有  备案号:京ICP备12018864号-26   联系邮箱:2 913 236 @qq.com