00:00
那好了,那咱们继续再往下看呢,各位啊,还是这个equals方法,接着往下研究,没有研究没有研究透彻啊,来继续看。如果属性是引用类型怎么比较?哎,看啊,这不还没讲完吗?好,我们来看这个Java语言当中的字符串string啊,Java语言当中的字符串string。啊呃,有没有重写突顿方法?有没有重写equals方法?那不用说。你猜呢?顿这个类是不是sun公司写的呀?散公司天天喊着让我们重写to顿,让我们重写什么?Equals方法,你说他自己会不会重写,这个类是他自己写的,是三公写的。
01:03
对吧,这是一个类吧。诶,没反应了各位。来找一找啊Java long包下是不是是不是这个类啊。这不源代码吗?Stringer打开。啊。Public。Final class string。这个string这个类,我们从里边可以找一下,这个大框里边找一下啊,CTRLF搜索一下啊,我们搜一下to string。好大家看,哎,再找一下啊,找一下。找一下找一下。再来。好,大家看有没有啊。是不是重写了?是不是重写了这个方法名是不是一样参数列表参数参数列表相同吧,然后呢,反回值类型也是怎么着一样吧,哎,这样的。
02:02
看见了吗?嗯,重写了equals呢。你看有没有重写啊,看见了吗?是不是重写了?对吧,哎。那行了啊。来看一下。我们大部分情况下。这样采用啊这样的方式创建字符串对象。S1。等于hello。是吧,String的S等于ABC。啊,就是大部分情况下采用这种方式创建字符串对象。啊,实际上也是一个类,不属于基本数据类型。
03:07
对吧,既然是一个类,那么一定存在什么构造方法。对不对。是不是一定有构造方法呀,它是个类啊,各位。你没发现它是个类吗?它不属于基本数据类型,它属于引用数据类型,这里有没有构造方法,往下拉大家看啊,这是不是无参构造。这是不是有参构造,你看。是不是有参数误导方法?这是不是构造方法里面可以跟个差数组是不是?你看这个是不是也是构造方法也,哎,也是构造方法,你看这是不是又又一个构造方法呀,哎,其实string啊是也是存在构造方法的,但大部分都是这样创建啊,我们也可以采用这种方式,各位看好了啊,String s3等于new string。啊60吨TEST10吨S4呢60吨。
04:03
叫什么呀?TEST2,那么system.out.print打印输出S3等于等于S4,这个结果是啥呢?哎,我问大家问题,双等号能不能比较字符串?不能啊,双等号比较的是对象内存地址啊,你扭了一次是不是一个内存地址,你又扭了一次,不是个新的内内内存地址,S3的内存地址和S4的内存地址是不是不一样,保存内存地址不同,所以这个结果是什么?哎,这个写的一啊,不是二啊,TEST1这个也是TEST1,这个S3现在呢,等于等于S4,这个结果是true还是false各位。因为这拗了一次嘛。又扭了一次嘛,几个对象啊。六两次两个对象吧,两个对象内存地址是不是不一样啊?六两次啊,两个对象内存地址S3的三保存的内存地址和S4保存的内存地址不同。
05:12
双等号判断的是内存地址吧?双等号判断的是内存地址,不是内容。这个结果是false来Java c呢,我们去编译一下T03点加va,然后Java去运行T03层。False,你看是不是false,哎,False啊。所以记住了比较字符串能不能用双等号。不能啊,比较两个字符串能不能使用双等号。答案是不能,必须调用什么equals方法,那么这个equals方法对于string来说,它有没有重写?我刚才让大家看源代码了,子润这个类的ES已经重写了。
06:07
所以S3在点ESS4的时候,结果是啥?S3点equals s4。这个结果是不是就是处了?因为。已经重写equals了类啊,已经重写equals方法了。S3呢,表示的test的一嘛,S4表示的也是TEST1嘛,所以S3ESS4最后结果应该是true吧?来看看Java c编译,Java运行好,我问大家一个问题啊,如果这个结果是false的话,是不是代表我们的字符串没有重写ES?如果这个结果是true,是不是就代表我们string这个类已经重写了一口方法呀?
07:00
因为他俩内存地址不一样啊。对吧,我们看这个结果啊,走最后的结果是true,各位看见了吗?是不是,哎,用双等号就是false,但是你调equals方法结果就是true,这说明比较字符串。我们应该调equals方法,String类已经重启了equals。啊,总结一死顿类已经重写了什么方法?比较两个字符串不能使用双等号啊,必须使用equals。Equals是通用的啊,通用的来第二个我们来研究一下string,它有没有重写to string方法,String类有没有重写to string方法呢?我们拗一个对象就知道了,X等于拗一个什么呀?String我们写上去叫什么呀?叫做比如说动力节点,我们写上啊动力节点好了,那么接下来呢,我们在这儿怎么着x.X点什么to论。
08:15
啊,然后我们把这个输出一下。如果string没有重写to string方法。输出结果应该是怎样的?如果string没有重写to string方法输出结果应该是java.language string艾特符号,然后有个16进制的地址。对不对啊,大家想一想,如果这个死顿这个类。死顺这个类大家看看是不是包是Java浪包类名是不是叫顺。对吧?那么如果string这个类它没有重写to string方法的话,输出结果应该是类名加一个艾特符号,后面有个16进制的地址。
09:10
我们来看这个X调突死顿方法的输出结果。我们看一下最后的结果,Java c编译加运行,我们发现最后输出的结果是动力节点。看见了吧,最后输出这个。啊,New string,然后呢,x.to string x.to string啊。输出结果啊,输出结果是这个,这说明什么呢?这说明死钝类经过测试啊,顿类已经重写了什么to string方法啊方法。并且我们也知道,当我们输出一个X的时候,它这个X是个引用吧,它会自动调用这个引用的什么方法呀,自动调用这个引用的什么方法呀?Toth顿这个点tooth string是不是可以省略不写呀?
10:07
对吧,当你省掉的话,我之前不讲过吗?输出的如果是引用的话,它自动会掉一个引用的to方法。来,我们再看是不是这样的,加入C编译加运行,大家看输出的是动力节点,而不是对应的内存地址啊。在这里它能输出的是动力节点,不是对象的内存地址,这也足以说明了我们string类重写了to string方法啊,String类已经重写了to string方法啊,就完事了。知道这个啊,大家不要把string特殊化,也是S公司写的一个非常普通,不能再普通的一个Java类。他只要是内,它就有构造方法。它只要是类,它就有构造方法。各位。他只要是类,它就有equals方法,它只要是类,它就有to论方法。因为equals方法和to论方法都是老祖宗带的基因,你作为此类它的父类是object,所以你一定会有equals也有to论,就看我们这里测试了一下,发现我们字符串这个东西啊,它的equals方法已经重写了,发现我们字符串这块啊,它的tos顿方法已经重写了。
11:15
另外警告大家啊,一个东西就是字符串比较是否相等,不能用双等号。你像这种情况比较就失败了。比较两个字符串是否相等,必须调equals方法,因为equals方法是通用的。因为equals方法才是真正比较两个对象是否相等的。啊,所以我们在这里来个大结论,各位啊,大结论大结论Java中什么类型的数据?使用双等号判断相等Java中什么类型的数据可以使用。双等号判断。Java中什么类型的数据需要使用equals判断,注意啊。
12:06
Java中基本数据类型比较是否相等,使用双等号。啊,Java中所有的引用数据类型统一使用equals方法来判断是否相等。这是规矩啊,这是规矩,各位引用类型判断相同,就有E方法。如果是。基本数据类型相等,就判断的话,你要用双等号,这是规矩啊,你把这个规矩记住就行了啊。
我来说两句