00:08
行了,那么接下来咱们继续再往下啊。嗯。来TEST04。Public class test04。煮方法。那么现在呢,在这儿我来一个简单点啊,来一个student,完事之后呢,学生呢,都有一个叫学号的。学号的啊,还有一个school。呃,这个是学号,这个是所在学校啊,然后呢,接下来呢。
01:00
嗯。我们可以重写图论方法。然后我们可以重写什么呀,Equals方法,各位。我们在这锻炼一下啊,我们来重写啊各位行吧,重启一下啊,重下图斯顿来是不是反回顿啊,发名叫图斯顿吧,来直接返回啊,返回比如学号呗,学号多少啊,Number呗。是不是,哎,那加个逗号行吗?学校所在学校。叫所在学校。名称。加上这个school。行吧,这这这是不是就是图论方法呀。对吧,哎,构造方法给一个。再给一个。有参数的。啊。
02:07
好,构造方法无参有参给了,然后属性是两个,然后是图层方法重写了equals呢。需求啊,是这样的,当当一个学生的学号相等,并且学校相同时。表示。同一个学生,这个equals该怎么写?你思考一下。就这个要求啊,需求是这样的,当一个学生的学号相同相同并且学校相同的时候啊,表示同一个学生,那我们我们这的E方该怎么重写,就是思考对吧,哎,这个ES该怎么重写呢。返回布尔类型吧,Equals参数的类型是什么类型啊,Object object啊来怎么写?
03:04
我就直接写了各位啊,首先第一个,如果说你obj啊,要是等于等于,那或者说呢。你OBJ呢,Instance of对吧?谁呀?嗯,Student你不是个学生的话,我认为直接return一个false就行了啊,那如果大框中有一条加位语句,大框可以省啊,Return一个false。如果OBJ等于等于nu,或者说OBJ他不是个学生,我统一返回一个返回一个false啊。那如果说我们的这个this要等于等于obj的话,那没跑了,肯定return一个什么呀,True是不是好,那么继续再往下,各位啊,我说我说过啊,If语句大框里边只有一条加语句大框是可以省略的啊好,那么再往下的话怎么写啊?怎么写各位if什么if学号怎么着相等吧,并且什么学校什么相同吧,好,那return什么呀?哎,一个true是不是就行了,其他情况是不是return false。
04:05
Equals方法编写模式都是固定的啊,Equals方法的编写模式都是固定的。各位啊,架子一样,架子差不多叫做架子啊,差不多明白吗?架子都差不多啊,好了,学号相等,并且学校相同。那你。这边拿不拿,拿一下呗。你this.number呗,对吧?哎,但是你这边是OJ需要转型,怎么转呀,OJ向下转型转成学生student。是吧,啊,那就是student s呗。是不是,那你z.number要等于等于S点。对吧,这是不是学号,各位S它的学号Z是它的学号,这不这不是两个学号相等,并且是学校相同,好,我问你学校是什么类型。
05:03
学校是什么类型?各位顿对吗?论怎么比较,用双等号还是用ES?刚讲过各位啊。来给个回应,字符串比较在这儿字符串比较。这是个死论呢。是不是,哎,好,我们this点什么。事故。This指的是当前对象嘛,他的school就是学校呗,他的学校这是个字符串吧,各位。是不是字符串好,我问你字符串里边有没有equals方法。有点什么equals括号里边传什么?S点什么。事故。能看懂吗?各位能看懂吗?
06:04
This school说的是不是就是?我自己的这个学校啊。学校是个字符串吗?就你前面这个东西是不是一个字符串,你字符串对象有没有这个equals方法。Equals方法括号里边跟的是不是另一个字符串?不要用双等号啊。用双的号不行。双杠双引号,我保你不行,一会儿我给你演示个例子你就知道了。因为你不知道那个字符串它到到底是怎么创建出来的。它这个字符串如果是这样的话。那你用双导号问题不大。
07:00
明白吗?那万一呢,它字符串在创建的时候,你哪知道它是不是扭出来的呀。如果它是拗出来的,你用双等号能行吗?不行。啊,字符串的比较,你就一本正经用ES就行了,不要用双等号啊。因为字符串不属于基本数据类型,这个属于基本数据类型。比较时使用什么呀?双等号。引用数据类型比较时使用什么呀?Equals方法。所以这块呢,我们再来啊,说一个字符串,点equals括号里边传一个什么,另一个字符串。那么前面这个字母是谁?是this的school?思故。
08:02
你后边这个字符串呢,其实是谁呀,是S这个对象。他的事故。呃,那个死顿类怎么重写一口,这是源代码啊,就是讲讲源代码呗,就这意思吧。就看源代码就行了,源代码没什么难的。就几行代码。this.school. equalss.school啊,如果是这样的话,Return一个true。当然你也可以直接在这return后边去掉。对吧,这样的话,这个equals不就写完了吗。是不是,哎,主要是这个想跟大家说一下啊,就还是那句话,死论类。String对象比较的时候必须使用equals方法,我们看一下啊,比如说student学生new一个student。
09:07
啊,然后这块呢,学号是1111,第二个参数啊,本来我们传这个学校名字。学校名字的话,假如是动呃比动力节点的,比如说北京大兴亦庄。亦庄。啊,亦庄二小。然后接下来我们再拗另外一个学生S2。S2这个学生呢,也是111北京大型一装二小,那system,呃,system.out.printline打印输出S1等于等于S2system.out.line打印输出S一点ESS2S1点点什么呀,Equals s2这个结果就是false。对吧,但是你这个结果就是出。啊,这个结果就是除。因为第一个学生念完之后,第二个学生这两个对象,两个对象两个内存地址,所以双等号就是false,如果你equals,因为你在那重写了呀。
10:06
重写equals是不是只要是学号相同,学校相同的,是不是就就返回处啊?这结果是不是就返回处啊?返回处的话,那你这个ES方法,你调的不就是这个ES吗。那这个结果是处吗?是不是啊,来我们编译一下啊,加va c t03.04.java啊Java去运行T04走。一个false,一个是true new完之后直径双等号是false,但是equal的方法是true。对吧?哎,我们来看看啊,字符串用双等号行吗?来拿过来啊this.school是不是一个学校s.school是不是另外一个学校,学校和学校用双等号,这是字符串,我们看看会出什么问题行吧。
11:00
哎,当前你可能没啥问题,我把上面那个程序改一下各位就有问题了,把这个拿过来。放过来,大家看这个北京大兴亦庄二小,我采用new的方式。60吨。下边这个北京大兴亦庄二桥也采用new的方式。好,大家看这样的话,这个S1和S2他再去调这个ES方法的时候,第一个学校和第二个学校,我问你第一个学校是不是new出来的北京大型亦庄二小,然后我们后边s.school这个是不是也是new出来的润对吧?New出来两个论是不是对象内存地址不一样,你用双等号判断的话,判断是这个对象内存地址和这个对象内存地址啊。对吧,所以这块的结果是不是就是false。对吧,是false false吧,你看你运行一下,你看是不是false false编译运行。
12:00
你看你这就不对了,你这个111也是北京大田一中二小的,你也是111,你这个也是北京大田一中二小的,那你这个结果应该是true啊。这个应该是true啊,你不应该是false啊,哎,所以你equals这样写就不对了,你这个位置比较两个字符串是否相等,不能用双等号,你得用equals方法啊,不行啊,不能不可以比较,只能采用这种方式,你下边这个字符串和另外这个字符串这个调equals方法比较,你就算你这块扭出来一个和你这块扭出来是两个对象,但是你这个字符串和这个字符串是一样的,Equals方法返回true啊,所以这个结果你看再编译,再去运行,你看就没问题。False处嘛,第一个是false对吧,第二个是处嘛,就对了,对吧,你不管你这块是采用这种方式,还是采用这种直接在采用这种new的方式,对不对,哎,那你这个equals如果在这这样用的话,这是更通用吗。对不对,字符串比较用E口的方法更通用嘛,更通用。明白我说的意思吧,哎,更通用啊,行了,那这个ES方法呢,咱们也差不多,基本上讲的差不多了啊呃,下午的时候我再出一个题,我再考考大家,看看大家E口到底会不会写好吧。
13:11
行,吃饭去吧。
我来说两句