00:00
那我们讲这个object的话呢,重点其实呢,是看这两个方法,因为我们在平时开发当中使用的频率上是极高的啊,那首先呢,我们来看一看这个ES啊,又回到我们这个位置了。好,这个E扣子这块的话呢,我们要讲的点,其实呢,就在下边写了啊,这重点说的是它啊好首先的话呢,提到这个叫适用性的问题哈,就我们这个方法呢,什么时候能用。啊,那这个呢,说诶那任何一个对象都有,那都能用啊这倒没问题,把这个视野呢,再放大一点,基本数据类型能不能用。不能用是吧?哎,基本数据类型你跟object连系承关系都没有啊,所以用不了,那么数组能不能用呢?对,速度是可以用的啊,刚才我们在这块呢,也看到了说啊这个往上走一下啊。说这个object啊,所有的对象,包括呢数组啊,都相当于获取了它这里边儿的一个方法。所以呢,呃,数组是可以用的,那杨IG呢,这个实用性我们就可以说呢,是任何引用,呃数据类型啊都可以使用啊。包括呢,我们后续呢,讲解的这个接,呃接口啊啊接口这个事现类的对象啊,你也可以去使用的啊没问题。
01:06
好,那么要用的话呢,下边就涉及到了你是怎么定义的,然后我们怎么用。哎,这样问题了,好这块呢,我们上来呢,咱就先整一个例子了。哎,这呢,我就叫user,嗯,咱就写一起吧。一个user。哎,在这里边儿呢,我们去声明一个,比如说name age这样俩属性啊,然后整一个构造器啊。先来一个空餐的。再整一个代餐的。这么着啊,好,这个私有化呀,盖才方法呀,我暂时就不写了,好,回到这儿来啊,来一个没方法。来大家看一下啊,我这儿呢,声明一个user。我叫U1,诶你有一个U,嗯,他呢叫汤姆,12岁了,然后呢,我再去造一个对象,属性值一样。都一样啊好,那么在这种情况下呢,我U1呢去调ES,把U2呢放进去,诶,它会返回说你是出还是false,那么大家猜一下它是出还是false。
02:09
法师。感觉没那么大底气似的是吧。这判断它是不是相等,好说是false啊,来,我们run一下啊。诶,结果的话还真是false,说明大家说的是对的啊。那么我们当前U4呢,并没有重写这个方法。哎,那能掉,那肯定是来自于负类了,它的父类呢?就是object是吧。没写傅雷,那就是object,好,那我这按住CTRL键一点,显然呢,我就点到object这块了。诶,那么这呢,就是object当中这个方法的一个声明啊,CTRLC。那么在这个声明当中,大家看的非常的清楚啊。这哥们儿呢,你发现?跟等等一样是吧。诶,那就是判断一下啊,在我们这个问题当中,U1和U2的地址值是否相同。
03:01
那很显然就是俩对象嘛。所以地址就不相同是吧,诶所以这块我们看到它呢,就是一个false的情况啊。所以这块呢,关于这个子类的一个说明情况呢,诶这块我们就稍微的可以提一下啊,说呢这个注意啊,我这就先明确叫自定义的类啊。就像咱们这个user一样,说自定义的类啊,在没有重写啊object中。啊,这个E4,哎,方法的情况下。哎,那么调用的。哎,就是啊,Object类中。啊,声明的啊,这个E的方法啊,毫无疑问吗。啊,这个方法了啊,那么既然调理方法我们说呢,比较呃两个。对象的引用地址是否相同?或者换句话说呢,你可以列解成了哎,比较两个对象是否指向了堆空间中的。
04:00
同一个。对象是吧,或者叫同一个对象实体。哎,这样是一个意思啊,说白了就是你那俩地址一样不一样。诶刚才呢,看的也很清楚啊好,这呢是咱们自定义的类,诶那平时呢,我们会用一些像比如说string是吧。这叫字符串了啊,这个string的话呢,除了直接这样声明之外呢,它其实也能去new啊。好歹人家还是个类呢。哎,我就U了,然后呢,它的构造器里边呢,其中一个呢,可以放一个字符串了啊,我这呢就造了俩。那么很显然呢,这是俩对象啊,也就意味着如果我们用等等去判断它俩的话呢,这就是。Force。俩对象等等,肯定是false对吧?好,那关键的就是我拿这个equals去判断哈。哎,出这个大家呃,有一些这个相关的经验了啊,发现呢,这时候呢,它的结果呢是处。嗯,那我们能够得到的结论呢,就是他用的肯定不是object的了。因为我在里边跟他一样是吧。
05:01
诶,所以这块它之所以是处,那一定是他重写了。啊,你看这儿呢,就我们这个论里边啊,就。到这块了是吧,然后这块这个代码的话呢,跟大家看这个JDK8的话呢,就会有一些区别了,你看这呢,我们看的是17,你会觉得说哎哟看着好像还有点痛苦是吧。是不是不太好理解?诶,前面我跟大家提过啊,就是这个源码的话呢,它不断的做这个版本的迭代,越迭代呢,你可能越不容易看懂,你越觉得他写的很高级哈,诶那怎么办呢?你看啊,咱们可以这么着处理一下。针对于这块,我们把它改成是这个八是吧。这块我改成八,哎,我也建议大家呢,你在八里边儿看着源码能看懂就可以了啊。好,我这边都改成八了,这时候你看我再点这个一四。既然不一样了。这是巴黎的。啊,注意啊,或者还可以这样啊呃,我CTRLN啊。CTRLN,咱们就调出这样一个框,在这里边儿,你写死。
06:00
然后呢,在这个位置你写一个all places是吧。诶,他这玩意还能列出来,你想看17的,你还是想看八的呢。我这块之所以能列出俩来啊,是因为呢,我有的这种Mo。诶诶看不着了,我这咱们这不有好多的这个模块嘛,是吧,只要你有的模块是八的这块就能看到八,哎,只要有的模块是77呢,这块就能看到。就是你当前这个工程里边的所有的module,呃,你你要是全用的是17,这块只能看到17啊,全用的八只能看到八,如果有的是17,有的是八,这块就能看到两。咱们不是刚改了嘛,所以我能看着脸啊,所以你通过这种方式呢也行。你说我现在就想看一下八的,那你就点这个,你想看17的,你就点这个。就可以了,好,这是一个小细节啊,行,那咱们就拿着八这个来简单看一下啊,这是它重写以后的这个方法,你看大大大概怎么做的啊。呃,先看一下你哥俩的这个地址一样不,你要地址一样的直接就出了。咱都不用细去比了。
07:00
地址一样,没得说。啊,OK,好,那如果说呢,咱俩要是地址不一样,那说明就是俩对象了。那我先看你这个行三,注意咱们这个方法呢,是object当中定义的。哎,Object里边定义的时候呢,它的形态呢是object。所以你对呢,重写的时候咱们说了啊,重写的方法,名跟形态都得一样。所以你也是object。好,那我这块就给判断一下,说你是磁砖吗。哎,你要是string咱俩还比一下,你要不是string直接就pass了。好,已是四针好强转。旋转完以后的话呢,诶注意下边这个呢,你看有个叫value哈。咱们说呢,字符串字符串。这个这样哈,就是串呗。就这样串啊。字符串的底层啊,每个位置不就是个字符吗?就是个叉呗。所以呢,字符串呢,其实底层存储的时候呢,就是用的一个叫叉型的数组,哎,来存的这个字符串,像我们刚才这里边写了一个哈,这个数组呢,长度就是五。
08:02
啊,每个位置呢,就放一个字符。啊,那么这个数组呢,就叫value啊,你看我点一下就是string里边呢,定义了一个。差型的数组。所以现在呢,我想看看两个字符串内容是不是相等,其实呢,就是比较一下这两个数组。它俩是不是每一个字符都一样啊?哎,这个事就行了啊,那比较之前呢,先不用着急,先看看咱俩长度一样不,咱俩长度要都不一样了,那就直接放吧。啊,长度一样了,行,那咱们就一个一个来啊,呃,你先把你当前你这个呃调这个方法的那个数度拿过来,这呢,我把我行三的这个数字呢也拿过来,咱俩就一个一个比,只要出现有一个位置不一样了,咱俩就放了,要一样一样接着比。哎,这不就是循环吗?诶,所以呢,我们看完这个逻辑以后呢,你会也很清晰哈,就是一个字符一个字符的比了核心的点啊,哎,那由于呢,它重写了,所以这块呢,你看一个个比的时候呢,这就是一样的,所以呢,这就是除。诶,没问题啊好,那么类似死之这样场景的话,其实还挺多的啊,呃,我再举一个例子啊,比如说。
09:06
后边咱们会讲到这个叫fell啊。我去new一个file。哎,表示呢,就是具体的一个比如文件了啊,哎,比如说我这个D盘下呢,我放了一个ABC.t这样一个文件。这呢我们需要呢,去打包一下啊,因为呢,在好几个位置看都有,我用的是上面这个啊。好,然后呢,我再复制一份。哎,我叫二。诶,D盘下呢,有这样的一个文件,注意这个D盘下可能这个文件不存在。现在呢,只是内存层面来说啊,此时的话呢,我们去打印一下FILE1。点1COS2。啊,对于file来讲呢,它也重写了,比较的就是你俩地址是不是一样啊。啊,就是指向了是不是同一个文件了,所以呢,此时呢,我们去run的话呢,它也是除啊。你看也是出。行,那么类似这样的场景的话呢,其实还有一些,诶我们这儿呢,直接做一个总结哈,上面这个呢,叫自定义的类,呃,下面这块呢,我们说呢,呃,对于啊,像。
10:05
像谁呢?比如说string,还有我们刚才说的这个file,哎,包括呢,还有我们这个日期的这个date啊,和后续我们还要讲的这种叫包装类啊等。啊,像这一类的话呢,他们都。哎,重写了。Object。啊类中的。E的方法。哎,那么他注意的方法呢,呃,用于比较两个对象的,咱们泛泛来说呢,就是呃,实体内容啊是否相等。对于死人来讲,就是你这个字串的这个。字符数组是不是一样,File的话呢,就比较一下,呃,你们对应的这个文件的是不是同一个哈,诶,那么对于我们这个叫date的话呢,就看一下你俩对象是不是指的是同一个时间。哎,包装类呢,我们到后边再说哈,再具体的好,这呢,就我们说的这样一个点。
11:04
哎,大家知道为啥啊。好,那么既然呢,像这一类呢,我们平时开发中很常见,它都重启了,那么我们平时开发中要是自定义类的话呢。一般咱们要是掉ES了。咱们也得。重启。啊,因为你看这儿啊,我这块叫equal收呢,如果你要没重写。那就是我不在理他。而我们这里的呢,就是等等。那既然我都是调ES了是吧,如果我就是想判断等等的话呢,那我就直接写了,那我还用你这个方法干啥呀。所以我们平时要调的话呢,肯定也是想比内容的是吧。哎,所以呢,我们就也得重写啊好怎么重写。啊,下边来了啊,重写啊,一口的方法。这呢是需要咱们掌握的一个点啊。同写同学,那首先得给人家这个长得得一样了,嗯,你去这里边粘一下这个声明也行,CTRLC是吧,或者的话你回过来我就直接呢这块就写。
12:05
ES了啊,诶一回车那也行。好,怎么重写呀?刚才那个论呢,不能白看。不是看热闹的,他咋重写,我们也得学着点是吧?怎么着?对,他有一个这个东西是吧,抄一下。哎,这个叫obj了,咱也叫obj,哎,抄这个东西你看有啥用啊。它其实相当于一个快速判断。是吧,只要你这个调这个方法的对象和这个形态对象你俩地址一样,那就不用比了,就直接就一样了,是吧。我要把他删了行不?删了其实也行,那你就下边呢一个一个去比属性了,但其实呢,它俩是同一个是吧。对,这个呢,就相当于一个快速判断机制啊。好,那除了它之外呢,我们下边这块怎么办呢。
13:02
你看他干啥呢?判断是吧。对,那咱们也这样来。我怕那人obj。是否是一个user吧?别死论了,咱们这不是有事儿吗?就是抄的话呢,就别都抄是吧。嗯,对,抄作业也是一样是吧。嗯。我记得我们上大学的时候呢,呃,我我们学那个统计啊,统计里边呢,有个拒绝域。这个拒绝欲呢,通常都要用这个阿尔法来表示。啊,这个就这样写哈,那么我上大学时候,那时候也抄作业哈。对,就是刚上大学的时候呢,这个作业就没写,那时候老整学生会,所以就老没写啊,刚开始呢,交作业不能不交啊,一开始的时候怎么着呢,抄别人还感觉心里面还挺愧疚的是吧,挺自责,怎么办呢?就是一边抄一边理解。啊,结果一节课呢,没听课就全抄作业了,一边抄一边理解嘛,是吧,后来想,哎呀。要不还是得停课是吧,但是作业得写先抄吧,抄完以后再理解是吧,在后边想抄完以后呢,期末的时候再说吧,啊就人就是这样堕落的是吧。
14:07
哎,我记得印象特别深刻的就是当时我们有一道题,这道题的正确结果呢,其实是2/3。哎,当然呢,那道题呢,就是统计里边的题,它有那个阿尔法是吧,诶我们抄的时候呢,其实也没细看,就先写呗,是吧,诶所以呢,我们就把那个结果呢,就写成。三分之阿尔法为啥会写成列呢?是因为有好多女生她这个。写这个作业吧,他那个二,我感觉他不好好写。他就非得写成这样是吧。所以导致我们抄的时候呢,就说诶,这应该是阿尔法是吧。所以就写成三分之阿尔法了,然后我们那个讲课呢,还是个教授哈,他就讲这作业的时候,特意把这道题呢给讲了讲,讲到最后呢,他把那个粉笔一扔,就这道题,大家说多简单,但我就纳闷了,为什么班里边有一半儿的同学都是三分之阿尔法?我们瞬间就明白了,抄错了是吧,对啊,所以这个你看教授就是这个好学生是吧。
15:01
所以抄的时候呢,你得得把着点是吧。这个也是一样啊,咱们这个呢,人家是在齿轮里的,咱这块是user里了,所以你得判断是不是user啊,好,你要是个user呢,咱就先强转。那就叫做U吧。哎,User一下啊OG。好,那么当前是Z4,然后行三是user,判断咱俩是不是E4,呃,那我们就认为啊,Name和age都一样了,就算是。处是吧,所以我们得都得比啊,那得怎么着呢?比如写个一了啊,说如果你当前对象的age跟user的age一样。基本数据类型就用等等了啊,并且。啊,这一次的name。这样写行吗?这个是不是不行了。那这个就成了又比地址了是吧,咱们说了比内容了啊,所以这块呢,你得把它换成ES。对啊。好,那如果说呢,咱内和H都相等了,咱就return一个出了。
16:03
只要有一个不相等,哎,你这写个else也行,然后这就是一个false了,就这样是吧,哎,我说一下,其实这个代码呢,咱们可以把它换一种写法是吧。哎,方式一哈,我直接就return一下。哎,这个你看是不是也可以。啊,你是处,你返回处,那本来他就是个处嘛,是吧。哎,直接呢,这样就可以了,好,那么这个大前提呢,是你这个obg呢,还是一个U,我们就return它了,你要else那就不是了吧。不是个user,直接return false吧。哎,就这样就行,那这个呢,其实这个else也可以不写了。直接就写,这不就行了。是不是就搞定了?哎,这个呢,咱们就写完了啊,写完以后呢,那回过来咱们看一下上面这个测试,诶刚才呢,我们一上来呢,这个位置呢,你看第一个就是个false啊,此时的话呢,我们再去run一下。哎,女发呢,你看就变成出了。
17:01
哎,所以呢,我们这儿呢,就有一个变化啊。啊,这个呢,你肯定能想到我们此时呢,在点那个equals,这不就是你自己重写的这个方法吗。哎,刚才也说过了啊,这个位置呢,其实你要不写呢,也是对的。啊,那就是相当于你要传的还是你这个当前的这个引用的话呢,你就下边呢,又去比了一圈,其实的话呢,也没必要比了,你俩地址一样,肯定是相同的。所以它是一个快速判断机制啊。好。这个我们就写好了,哎,那么这个写法呢,是咱们是不是手动实现的。诶邵东实验的,诶那么由于这个操作呢,我们在开发当中啊,是比较常用的了,进而的话呢,其实你也可以不自己去写了,我们也可以把这个呢,你看我给主使掉啊,注释掉以后的话呢,诶我们可以呢让idea呢叫自动实现。是自动实现al加insert。这儿呢,有一个他。啊一点啊这块呢,就它会有不同的标准啊,你是想用的是呃,这个操作方式还是这个方式啊,其实都可以哈,哎,都能够满足我们的这个需要的。
18:09
他默认的选这个,那我们就用这个吧,好,Next。这块呢,会说明说你怎么算式叫E4呢,哎,我们说呀,内和A都得一样,哎你要说诶内呃age一样,就算是E3,那你就光选它。你要说光内一样就算一样,那就选它,咱这呢说俩都得算是吧,所以我这块选中啊next这个哈依库的话呢,咱们先不管它啊,所以这块呢先忽略掉啊,这个判断是不是飞空的事儿,这个不勾也没事儿啊好得到这里边呢,我们把它呢就先删了啊,咱先不管它,诶这个呢就是自动的给我们去重写的。重写在这里边儿呢,其实你就发现呢,你看核心的逻辑呢,看你俩的这个A值是不是一样,并且啊,这里边儿呢,其实他用具体的这个去判断了。就是子午串的话呢,这不就判断他俩一口死。所以呢,跟我们这个写法有点区别啊,但是呢,功能是一样的。那么结论。
19:00
结论,大家以后怎么办呀?以后就自动生成就行哈。说了半天不用写,但是这个写的话呢,我建议大家还是要练一练,第一个呢,锻炼逻辑,第二的话呢,我们以后呢,诶以后。判断是否相等,我们不自己写,但是以后有个需求呢,就是比较两个对象呢,谁大谁小。我们呢,呃,也要写类似于这个逻辑,所以这块你要写了以后呢,以后我们比较大小的时候呢,大家就轻车熟路了啊。好,回过来。啊,这块说一下啊,说开发当中的一个使用说明啊,这就很清楚了啊说呢在实际开发中。啊,实际开发开发中是吧。说呢,针对于啊自定义的类。诶说常常哎会呃判断哎两个对象,哎是否equals。而此时。啊,而此时啊,主要是判断。
20:01
哎,两个对象的属性值是否相同是吧?啊,两个对象的这个,诶属性值。哎,是否相等。哎,所以结论什么呢?说我们要重写object。哎,这个类的E方法。好这个方法啊,那这个方法的话呢,我们说呢,如何重写呢。哎,如何重写是吧?哎这块我们说两种方式,第一个啊,就是手动的自己去实现啊。啊,手动自己实现,第二呢,就是呃,调用。Idea啊,自动实现。哎,那很显然这个呢是推荐的是吧,呃,这个呢,大家现在因为我们讲它呢,你练一练以后的话呢,就没有必要自己去写了啊好,那么关于equals呢,核心我们就说到这儿了。那E呢,其实也就讲完了啊,讲完以后的话呢,这块其实有一个高频的,呃,面试题这道题的话呢,叫高频。
21:04
哎,我这块写高频呢,那就真的是高频。哎,如果呢,是我这块讲高考或者是考研的话呢,这块我就肯定不会说是高频的这个题了,只会说高频知识点。啊,因为呢,你不可能遇到原体。啊,如果你高考或者考研的时候遇到缘起了,那绝对是事故。对,对应的那个人呢,可能就得拉走判刑了。对啊,诶每年呢,其实在这个,比如说六月份高考吧,基本上过年以后啊,这个相应的有些省份他不是这个共同命题嘛,诶这波人呢,就得是拉到监狱里了。关起来是吧,供吃供喝啊,每天呢,就是出题啊,他得研究这个题,这道题呢,设几个坑啊,大概多少人能过是吧,再来一个坑,多少人能过,哎,大概控制一下诶,分数是什么样子的,每年得是呃,比较科学的啊,如果这今年这个题明显简单了,明显难了。一堆人都会很受伤是吧?
22:01
诶,所以他们的也是科学的去命题了啊,诶首先一个最基本的标准就是一定不能出现原题啊,那当然对于我们这个it开发大家找工作来讲,首先对于一个公司来说,不会有专门的几个人闲着没事儿就是专门的出题的是吧。这也太无聊了哈,诶,所以说呢,就会出现呢,有很多题目是高频的。啊。大家呢,现在呢是学技术啊,过了三五年以后呢,你们也会在各个岗位上呢,去面试别人。啊,说明天呢,有一个面试啊,需要你得面,你咋面啊,你这时候是不是就打开一下百度是吧。啊,比如以Java为例啊,或者大家大数据的,你就大数据是吧,Java大数据一空格面试题是吧。诶,然后这块呢,就出来了一个列表,然后你明天要面试了,你说哎呀高频的有哪些呢,你也打开百度了。当然现在一说打开百度感觉挺low的是吧。当然百度呢,现在数据量呢,还确实挺大的啊。你也输了同样的词条,然后呢,你在这块看,他在这块看。
23:02
你看呢,就是应该得看这个,他说明天就考这个是吧。诶,列出来的靠前的,自然而然就是一些高频的,哎,凡是我这块写高频的,那真的你是有很高的概率呢,是被问到的。那你就说就行是吧。当然你说我这块就死记硬背,咱们把这个前五个月的课都省掉了,最后一个月专门刷题了得了,嗯,能不能保证你找着工作呢?能。可以啊,这个是可以非常自信的说是没问题的,就大家这个智力水平肯定是可以的,但是是吧。你的目的肯定不是为了进这个公司。对,因为就像这个大家这个上大学一样啊,说我的目的就是上了一个好学校,因为咱们中国的话呢,叫严进宽出。基本上你上了大学以后呢,你别你别你别得瑟是吧,别瞎整,你肯定是能毕业的。啊,这个这个你不会存在不毕业的情况,就是因为他是严进宽出嘛,啊但是呢,你找工作可不是这样啊,找工作你进去之后呢,只是你第一步。
24:01
试用期能不能过,这不一定,虽然说以极大的概率是能过,但是你要纯刷题的话呢,那你就选了。所以大家呢,在这儿学的这个六个月的课程啊,你是为了以后工作你能做得下去。啊,去去准备的啊,如果仅仅是说呢,你能进这家公司啊,为了这个目的的话呢,咱们是可以做一个刷题这样的一个环节是吧,但是其实没有意义啊。所以咱们呢,学了六个月之后呢,最后呢,就留着这样的,呃,一星期之内啊,这个看简历啊,包括大家写简历,我们再讲讲高频面试题啊,也就大概一周之内的时间啊,相当于带着大家呢,总复习一下是吧。OK啊,所以呢,主要的还得是放到平时啊,OK,好,那么针对这道题呢,咱们就说一说啊说等等和equals有什么区别,怎么说呢?啊,可以分别来讲是吧。对啊,那关于这ES呢,其实我们刚才说的挺多了啊,先我们看等等,首先呢,这个等等呢,注意它就是一个运算符。
25:03
这个运算符是吧,它是一个运算符,这个运算符的话呢,紧接着呢,第一个使用范围。对这块呢,就涉及到基本数据类型是吧,引用数据类型都能用了。啊,这一点的话呢,就跟ES呢,首先就不一样了啊,啊那么第二点呢,你就分别来说一下啊,基本数据类型它是什么意思。哎,这个就判断这个就咱就叫做这个。数据值吧,是否相等是吧。那这块呢,我们就是其实你说到这儿就行了啊,只不过呢,咱这块讲到它的时候,我顺便再举俩例子。这个一个。我就不去写到咱们代码里了啊,直接就写到这了,这呢是个十。I2呢,也是个十。哎,这我就简写了啊,说I1呢,等等于L2。这个是出吧。对,这个在考你都有点儿侮辱你智商了是吧。
26:02
来来,我出这个题啊,说这个差一个CE是A。说他一个。啊,这个这个I3是65。然后呢,判断一下C1能等于S3,这个会不。还是放。对,这块是出啊,哎,你一看诶这诶。能比吗?能比。对,咱不还讲过自动力应提升吗?差的话呢,在这时候是就提升成int了吧。他一听,A不就是65吗?诶这个这作为一个常识了啊,诶大A的X码呢,就是65啊,所以它呢是个除,哎包括呢,比如我这float一个F1啊这个我来个嗯,12.0。注意你得加个F啊,In的一个A42。说呢,F一等等于A4。这个是初二方三。哎,还是出。那这时候呢,Int类型呢,就提升成float了,诶然后呢,核心呢还是12.0啊,所以呢也是true。
27:04
诶这呢都得清楚啊好,这呢是针对于基本数据类型变量啊,判断这个数据值是否相等。那么对于引用数据类型变量。哎,变量啊,这个呢,我们就是比较啊,两个引用变量的。引用啊。的这个呃,地址值是吧,哎,是否相等。所以呢,一个呢叫数据值,一个呢叫地址值。OK啊,嗯,或者的话呢,你可以再换句话说呢,就是比较两个引用。哎,是否指向。同一个对象实体是吧。OK啊。啊,其实还是地址的意思,嗯,这个应该不用刻意的去举例了吧。这这这挺多的是吧,像咱们刚才在这里边儿啊,你一开始的这个也好,这个也好,这不都是吗。判断一下你俩这个地址值是不是一样的哈,哎,那这就完了。
28:04
啊,这个呢,就是我们说这个关于这个等等它这个使用啊,呃,它呢就是一个运算符啊,那么接下来的话呢,我们要讲,那就得说一下这个叫ecos的一个使用了啊,它的使用呢,其实我们上面已经讲过了哈,简单说一下它的首先是个方法。啊,那既然它这个方法的话呢,那就涉及到它的一个使用范围啊。我们说呢,只能使用在。哎,对,引用数据类型上啊。所以这时候呢,我们那个数组也是可以用的啊。对,你看我们简单啊,这个拿过来啊。在这块啊,我们就稍微的看一下啊。诶,数组上使用ES是吧。哎,简单来说,我们比如说有一个数组。哎,你有一个in字形的长度为十好A2点E4,哎,这不是可以调吗?这块问题就是,诶,他怎么证明说是算1S呢。
29:03
20。这样是吧,这是一个数组,这个数组,那这时候我们去run一下。好,这时候你发现呢,它是个false,哎,说明呢,认为不一样是吧,这要写成个十。找一下。哎,这人看还是个force是吧。诶,对的啊,因为呢,这时候我们也没有所谓的重写之说吧。所以呢,用的就是object里边那个等等。哎,所以这块呢,它就是false了啊行,这个不是重点,重点就是数组这块看也能掉啊。哎,所以这块呢,我们写引用数据类型是没问题的,不用刻意的光写成类啊。啊,引用数据类型都行,包括数组。这是它的一个使用范围,然后下边的话呢,就是一个具体使用了。具体使用这块呢,我就不详细的说了,咱们上面这边都讲了这块大家怎么去说呢?就是你要描述一下,呃,这个对于比如我们像这个,呃,对于类来说吧。
30:02
啊,这个哎,重写equals和不重写equals的这个点啊。哎和不哎重写啊ES的这个区别是吧,你要没重写呢,那就我们这里的比的是谁啊,重写了,重写一般你都怎么重写,比的是谁?诶上面咱们都讲了,说一下就行好,这个呢,就是关于这道题目啊,这样说就OK了啊。好,那么这儿呢,关于我们的ES这个知识点呢,咱们就告一段落。好,继续啊,然后接着的话呢,我们来看看这个ES的这个,呃,相关的一个应用和客户的练习题,这块呢,我首先写了个应用,这个应用的话呢,其实想给大家呢,再指出另外一个实际开发当中大家要注意的一个点啊,这块我们来去说明,首先的话呢,我来写这个叫account啊,Account就账户的意思了,诶这呢,因为是练习应用了,所以我们这呢写的尽量就标准一些了啊诶大部型的一个叫做balance。哎,我们称为的叫余额啊好,针对这个属性的话呢,我们去提供啊,首先比如说盖菜的方法。
31:02
哎,然后呢,构造器。诶,构造器的话呢,习惯上我们都先给一个空餐的啊,其实目前呢,就已经构成一个渣币了。稍微回忆一下大宾的一个概念啊呃,类公共的构造器,空餐的公共的属性,还有概算方法啊。好,接着呢,我再去提供一个代餐的构造器。OK,那目前这个类呢,我们就写成这样,接下来的话呢,我们再去写一个叫customer customer叫做客户,哎,我们呢,有一个。哎,Private声明的类型的一个。啊,接着比如我再来一个private型的一个,接着我再去声明一个叫account类型的,一个叫account。OK了,那么针对于这几个属性,首先也是对应的盖菜方法啊,这个我们都提供一下,提供一下这个构造器。哎,空仓的构造器一个。好,然后呢,代餐的构造器一个。啊,这种写代码感觉就是成就感特别强是吧?嗯,好写的挺多了啊。
32:01
呃,那么写到这儿以后呢,接下来啊,我们想在这个测试类里边呢,创建两个customer的对象。创建这个对象的话呢,我们就想判断一下这个ES的问题。上面这个事儿你先不用看啊,直接来看我们这个操作。Customer c啊,你有一个customer。好,那么CTRLP一下这块就显示出这个参数了,我们使用这个,诶参数比较多的这个了啊,比如说这个叫Tom这个12岁,好,接下来的话呢,我们去new一个account。啊,看那里边呢,有个参数呢,就是余额2000块钱。诶,这个我就写好了。那写好以后的话呢,接下来我再去创建一个跟他一样的啊。所谓的一样的,就是你看就这个意思啊。都相同,那么此时的话呢,我们去打印一下这个C1啊,咱们就直接调e cos了啊,调C2等等呢,我就不考虑了啊,肯定是false。啊,那么现在的话呢,我们去执行显然呢也是false。对啊,这个呢,大家应该都能理解好,那我希望的话呢,就是比较一下这两个对象呢,它们各个的属性呢,是否是相同的啊,或者要是否是相等的,那我们就需要呢,去重写这个equal方法了,那么这时候重写equal方法的话呢,主要呢,想给大家提到一个点。
33:15
来你看啊,咱们就自动生成了al加insert,哎,我就点它了,这块呢,就直接next,怎么叫相同呢?哎,我们这块给自己的一个标准说,嗯,你得名一样,A一样,然后呢,账户也得一样,咱认为叫相等。注意啊,这个下面这个事儿呢,就是纯粹,纯粹呢,你得看具体问题当中,你是想怎么表达了哈。啊,比如说呢,在公司当中不是有员工吗。员工的话呢,属性也很多哈,但你说呢,诶两个员工是不是ES的,比如我们就想看一下你的这个工号是不是一样,工号要一样,我就认为你俩一样了。诶,所以呢,那个ES的话,你完全就只考虑一个属性是可以的啊,在咱们这儿呢,是咱自己定义的,说这仨都一样,我才认为相等,那我就都勾上next,这个就先不管它啊。
34:00
好这块呢,是不是判断非空的问题,这个哎可以也不勾,比如说啊好,那完了以后呢,这个位置我们就不要了。啊,不要了啊好,接着我们来看这块,嗯,这块的时候呢,诶你看此时呢,它就比较一下说你这个啊A置是不是一样,然后内呢是不是一样,后边呢,还涉及到这个账户是不是一样。呃,在我目前呢,写成这样的情况下呢,大家你再看一下我这个测试啊,你说此时我们要去执行是初2FALSE。好执行一下啊,这时候你发现呢,它还是false是吧。哎,说你看我都已经重写过了啊,都比了怎么还是false呢?对,这时候你要想我们这个account的问题是吧。这个account的话呢,是我们自定义的一个类啊,这个呢,在equals时候呢,是不是又调他自己account的equals方法了。而这个呢,由于我们account没有去重写,所以导致呢,就是这块比的时候,他俩是不是比地址了。
35:00
壁纸的话呢,显然不一样,所以呢,就认为你有一个属性啊,是不一样的啊,继而呢,这个就是false了。所以呢,想给大家强调一点,就是说如果呢,你在自定义类里边呢,使用了自定义类的属性了。而而且你还想重写以后的方法还用到它了,那这个属性也得。重写是吧,哎,所以这块呢,在account里边呢,大家也必须啊,去加上我们这样的一个。啊,这个next next啊这样的一个方法才可以啊,这个也是目前用不着我们就去掉了啊,好比较一下你这俩的账户啊的余额啊,是不是实打实的,这个都是相等的。哎,如果都相等了,这个就是你要是这个大的负的这个这个大了,这是正的啊,下边其实就是正常相等这个细节大家就不用去看了啊好,那么接着的话呢,我们再去做一个执行。好,那么此时的话呢,才是我们希望啊,得到的是一个出。诶,这个结论的话呢,就是我上面写的这个事儿。判断两个customer这个对象是否equals,除了呢,这个customer要重写之外呢,内部的类类型的属性也需要重写。
36:06
啊,这里边儿用到的string,因为string天然已经重写过了。所以呢,我们似乎没有感受得到啊,但是你要是自定义了一个类的属性了,这个你就得知道也要加上啊。好,这呢,就我们说的这个应用了,那就过了,接下来我们看一看这个课后的练习题。啊,第一道题说呢,这有一个order类啊,有这样的属性盖塞方法,还有构造器来重写E4,然后判断一下是否相等啊,比较直接的这样的一个需求啊,主要呢,我们关注一下就是它有这样的两个属性的问题啊。这样啊,我们这儿盯一下。好,回过来,这是我们去创建啊。在这去写好private in类型的order ID。词缀类型的order name。啊,对应呢,我们这块提到了盖菜方法。
37:00
哎,这样整一下啊构造器。构造器先整一个空惨的啊。来一个代餐的。两个都要OK,好,这个呢,属于我们前面讲过的这个基本的内容了,接下来的话呢,我们去写这个E库方法,这个以后的话呢,大家都是自动生成了,咱们现在刚讲,然后咱们再手写一个吧。哎,手写这个E方法啊,好,这块如果你要是记不清楚他这个声明的话,也没有关系啊,直接你写一个equals这块直接呢,会给我们提示啊。啊回过来,哎,一般习惯上呢,我们就先做一个判断,看看你当前对象呢和行参呢,你俩是不是同一个对象了,所以地址是不是一样啊,如果地址要一样的话呢,呃,直接我们就在这呢,就。哎,写了是吧。哎,瑞一个出。好,然后呢,我就写到这儿了啊,在这个位置的时候呢,我们就判断一下你这个obj啊,是否是一个order。那如果呢,你要试一个order,先强转。
38:04
哎,这个我们是obg啊好,调整完以后的话呢,我们就比较了,此时的话呢,如果我们认为说这两个属性都得相同才能是算相等,那咱就直接就然后就return啊,当前对象的all ID,这是一个基本数据类型啊。我就用等等。这个并且。这点all name是吧?呃,点ES是吧,然后OB order。哎,他点,哎叫奥点内。OK啊,诶刚才呢,我们在生成的时候呢,它不是就是自动生成的时候有个判断哈,最后呢,它其实是想判断一下,诶我们在。通过这样的一个,呃,属性调这个方法的时候呢,有可能这个属性的值是no是吧。哎,那要闹的话呢,调查不就控制人了吗?他意思是说你要不要提前加一个那个,呃,飞空的一个判断,就是在它是非空的情况下,我再调。就是能够使这个程序的兼容性更好一点是吧?
39:00
OK啊,行。好,那这呢是说,嗯,你要是是一个高点的话呢,我们就这样判断了,否则否则呢,你就不是。哎,那就直接return就行。啊,那这个否则的话呢,其实我们这个呢,Else呢,咱也说过也可以去掉了啊,哎,所以我直接这样写OK。好,写完了啊。啊,这呢是我们自己呢手写的,那手写完以后啊,我们下边呢,来写这个测试。很order的一个test啊。改变方法。ORDER1啊,你有一个order啊,这呢,比如1001啊,这呢后边是它这个名了啊,比如我们就叫order AA啊,就这样写的好,我再复制一份。哎,这样写的啊好,那么此时的话呢,我们就a order1啊调E的方法。那叫ORDER2啊,这时候呢,它就是一个出。哎,这的是个出啊好,就是这呢,其实是我们还是演示的这个顿呢,用直接赋值的方式,这个呢,其实叫字面量的方式了啊不光如此,诶我再来一份啊,这个我们叫三和四。
40:05
哎,这个呢,比如说你换一组也行啊,三和四这个位置的话呢,我们采用的是叫new的方式啊。哎,这样呢,我们给这个属性负的值加上这个角BB了,哎,下边也一样的道理。哎,CTRLC。哎,这么着啊,哎,那么此时的话呢,哎,这都是二啊,这两个呢,是新new的两个不同的字符串的对象啊,我们要是去比这个三和四的话呢,其实也是除。哎,转一下。嗯,看也是除啊,哎,就是因为呢,我们调到equals的时候呢,这个位置我们写的是equals啊。这个一定要小心,如果在这个位置你写成等等了。那么回过来。啊,这块呢,还是出是吧。嗯,这块还是处,但是这块的话呢,就变成false了。因为呢,它俩的地址值不一样啊。这两个地址值是一样的啊,这个大家呢,诶可以呢,就当成算是个常识一样了,以后呢,我们诶回去讲这样问题啊,就是这个这个意思啊,这个我叫HTR1了,这个咱们写成叫A,然后呢,我再复制一份。
41:12
这个叫二也叫A,此时的话呢,HR1跟H2呢,它俩是相等的,这呢当成是,哎算是先当成算一个常识吧。后边的话呢,我们会讲这个叫字符串常量池,这个呢,它使用的这个池子当中的同一个啊,所以呢,它俩的地址呢是相等啊。好,那么这道题呢,我们就结束了,然后看下一个这个需求啊,这里边儿的话呢,把这个最后的测试的代码都写出来了,这里涉及到有一个类叫做my date。哎,这儿呢,也确实让我们去定一个买data了。这个类里边呢有啊年月日啊,判断一下是不是相等啊,你就年月日都比一下。那就可以了啊。好,这个呢,我们就写一个叫my date啊。诶把这个类呢,我们声明出来,然后呢,它这个对应的这个测试呢,已经算是写好了,那咱们就直接把这个也拿过来啊。
42:05
诶,代码的话呢,就在这儿都放好了,我们直接CTRLC啊。粘过来往这里边儿一放就行了。好,那么这个买day的话呢,它这有个构造器哈,构造器呢,相当于对你这个类的属性呢,做初始化了,这叫年月,哎,这个叫日。啊年月日它是这样放的,所以我这块呢,在声明属性的时候呢。你也最好呢,考虑一下他这样一个特点先呢写得是吧。哎,这呢的一个month。嗯,然后private in的写个year是吧。这样啊好,那么接下来的话呢,你看我生成这个构造器的时候,哎,这呢,我把它搜都选都选中哈,OK一下,这时候呢,它生成的这个参数呢,也是按照这个生命的顺序来的。哎,按刚才这个来,这不是先是day month year。啊,是这个原因啊。哎,以前呢,我稍微给大家提到提过一下啊,就这个idea idea的话呢,它不像那个安卓studio。
43:03
啊,就是谷歌开发的,基于这个,呃,Idea呢叫社区版啊开发的一个软件,就做安卓开发的啊安卓开发呢,它比较,嗯,就有一个这个小特性啊,就是你先选哪个,它会先生成这个参数的一个。这个这个构造器的这个参数啊,比如我这样点的啊,我先点页再点mass。再点D,这时候你点OK,它生成的这个构造器呢,就是先有页,再有mass后有D啊。咱这儿不行,咱这儿就是你就看你属性先声明的,他就放前面了啊。好,那么接着的话啊,再整一个空餐的构造器。啊,接着呢,Get set方法。哎,全选啊,OK。好,那目前呢这块呢是没问题了,然后回过来我们还没有去重写E4。啊,那么这块呢,你有了俩对象年月日啊基本情况,那我们要执行的话呢,这个呢,显然执行的就它了。
44:00
啊,因为地址不一样嘛。啊,那么EQUAL4的时候呢。目前也还是他是吧。啊,因为这里边儿不也是等等吗。好,你看这个是not,这个呢是不等行,他希望的话呢,我们执行的时候呢,要equals的话呢,执行的是它,那就意味着就是你得重写这个方法了。啊,我们这块邮件啊,直接再去。不邮件了,直接我们在这里边了啊。好,这块呢,我们再演示一次呢,大家呢去手写。啊,这个E4,因为后边呢,咱们写的机会就少了啊。好一四。哎,来这块去写啊,哎,我们再写一遍啊,是首先呢,是当前对象的引用跟OB接是不是一样,如果一样就直接出。好在这判断啊,如果呢,地址不一样,地址不一样呢,我们再看一下你是否是一个叫MY。哎,如果是先强转。啊my data啊这个呢是obg好,那么强转完以后的话呢,比较一下这两个对象的各个属性是否都相等,然后就return了啊当前的。
45:08
嗯,先拿一也行啊,这个呢,基本数据类型了,所以都用等等。啊的。哎,他的这个页并且。啊,它的一个month。啊,对,等等于。啊,My date。哎,它的一个慢啊,然后再并且换行一下啊。这个D。哎,My date它的一个这不就可以了。好,年月日都相等,那就相等啊,只要呢,有一个不相等,自然而然的就是false了,好,出来以后在这个位置return。哎四哎就搞定啊。好,写完以后的话呢,我们再回过去啊,此时呢,你再调就是你重写以后的了。好,那这时候呢,他就是一口吐了。那就是相等的啊,OK。好,这呢就是我们对应的这个课后的练习题啊,就完事了啊,诶那其实的话呢,这个ES呢,这个事儿呢,本身呢不太难理解啊,关键呢,就是大家呢,写的时候呢,如果让你手写呢,还得花点时间啊,其实呢,我们说呢,建议大家就自动实现了,所以整个这个事儿的话呢,其实不太复杂。
46:13
OK啊,这个方法告一段落。
我来说两句