微信如何清理僵尸粉(微信如何清理僵尸粉又不被别人发现) 空中叠墅是什么意思(叠墅是什么意思) 社保滞纳金怎么算(单位补缴社保滞纳金怎么算) 手动搬运车怎么使用(手动搬运车怎么使用的) 专管员为什么讨厌代账会计(专管员) 百度百科博物馆计划十周年纪念微章怎么领取(100周纪念章) 小苏打能治好肿瘤是真的吗(自制苏打水的危害) 守护光明顶1.6攻略(守护光明顶1.6通关攻略) 重症疾病险该不该买(重症疾病有哪些) 拼装积木游戏怎么玩(拼装积木游戏怎么玩的) 电热水器使用说明书(美的电热水器使用说明书) LED发光二极管(led发光二极管电压是多少) 丰胸的最快方法3+3动作加瑜伽让你拥有傲人胸器(最有效瑜伽的运动丰胸方法) 少年歌行名剑谱排名(剑谱排名) gif动图怎么压缩?如何在线压缩gif大小?(在线压缩gif图片大小) 杨玉环怎么玩连招(杨玉环怎么玩连招视频) 乳糜血(乳糜) 怎么学高中历史的窍门(怎么学高中历史的窍门和技巧) 梨树的作用与功效(梨树的作用与功效图片) 蓝芩口服液的功效与作用和蒲地蓝口服液的区别(蓝芩口服液的功效与作用) js 随机数整数(js随机数整数) 湖州火车站附近酒店(湖州火车站) QQ飞车城邦守护兽怎么进化(QQ飞车城邦守护兽) 韩式盘发简单教程(韩式盘发简单教程图解) 地下城assertion failed错误怎么办(assertion failed怎么解决) 向量相乘坐标公式怎么推算出来的(向量相乘坐标公式) 拉丁舞裙服装怎么画(拉丁舞裙服装怎么画简笔画) 裁决之镰怎么解除(裁决之镰怎么办) 10178什么意思(1017代表什么意思) 如何选择进口婴儿奶粉(如何选择进口婴儿奶粉牌子) EVIDENT与深圳湾实验室举办首届EVIDENT Discovery Center生物成像主题研讨 合肥欢乐岛旅游攻略(合肥欢乐岛旅游攻略路线) 侏儒症的症状及病因(侏儒症的症状) 漂白 护理牙齿如何变白?(漂白牙齿怎么漂白) 波尔多液怎么配制?(波尔多液怎么配制用来防治西瓜枯萎病) tam是什么意思啊(TAM是什么意思) 手把手教你如何用百度网盘下载BT种子文件(百度网盘如何使用种子文件下载) 采访问题怎么写(采访问题) 英雄联盟如何参与MSI半决赛活动(英雄联盟msi比赛赛程) 架立筋图片示意图(架立筋图片) 最右如何添加交友卡(最右怎么看交友卡) 鹅口疮该如何治疗(鹅口疮该如何治疗才能好) 海贼王克比头像(海贼王克比) 怎么在机蜜租一辆特斯拉汽车?(如何租特斯拉) IE浏览器出错崩溃怎么办?(电脑提示ie浏览器崩溃是什么意思) 情人节送男朋友礼物吗(情人节送男朋友礼物) AutoCAD中制作等高线地形图(cad中怎么画等高线地形图) 第二年车险计算方法(第二年车险计算方法怎么算) 神雕侠侣后传第一部(神雕侠侣后传) 不可不学的摄影技巧 七:婴儿摄影技巧(儿童摄影拍摄技巧)
您的位置:首页 >百科精选 >

equals的返回值(equals的用法)

导读 关于equals的返回值,equals的用法这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!1、1 equals的本

关于equals的返回值,equals的用法这个问题很多朋友还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!

1、1.equals的本意——即在Object对象中定义的equals()方法有什么样的意义。

2、(此处先附上==的作用,后面仍有叙述。

3、因为==和equals()方法的关系是很密切的,后面有我自己的看法。

4、 ==用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true 而在比较引用时,如果引用指向内存中的同一对象,结果为true) public boolean equals(Object obj) 其比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false.public class Fish { private int weight; private String color; public Fish(int weight, String color) { this.color = color; this.weight = weight; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }}public class EqualsTest { public static void main(String[] args) { Fish f1 = new Fish(1, "blue"); Fish f2 = new Fish(1, "blue"); System.out.println(f1 == f2); System.out.println(f1.equals(f2)); }}——————运行结果为——————falsefalse由此可见,equals()方法的本意为确定两个对象的引用是否相同。

5、2.而JDK类中有一些类覆盖了oject类的equals()方法,比较规则为:如果两个对象的类型一致,并且内容一致,则返回true,这些类有:java.io.file,java.***.Date,java.lang.string,包装类(Integer,Double等)public class EqualsTest { public static void main(String[] args) { String s1=new String("sss"); String s2=new String("sss"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); }}————————运行结果为——————falsetrue由此知道,在String中equals()方法被进行了覆盖,使其意义变为比较两个对象的内容是否一致3.如果我们要自己覆盖equals()方法,让其比较内容或者有别的使用方法(当然我们一般都是用于比较内容的,但是覆盖的方法中真正的实现究竟是什么样的,谁知道呢O(∩_∩)O~)public class Fish { private int weight; private String color; public Fish(int weight, String color) { this.color = color; this.weight = weight; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((color == null) ? 0 : color.hashCode()); result = prime * result + weight; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Fish other = (Fish) obj; if (color == null) { if (other.color != null) return false; } else if (!color.equals(other.color)) return false; if (weight != other.weight) return false; return true; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }}public class EqualsTest { public static void main(String[] args) { Fish f1 = new Fish(1, "blue"); Fish f2 = new Fish(1, "blue"); System.out.println(f1 == f2); System.out.println(f1.equals(f2)); }}——————运行结果为——————falsetrue此例子中我复写了equals()方法和hashcode()方法,使得equals()方法脱离的本意,不再是比较两个对象的引用是否相同,而是比较其内容是否相同。

6、以上内容为一般书上的总结,下面是我自己想到的一些东西。

7、我们可以知道计算机归根到底进行的只是一些二进制数的与或非运算,加法乘法运算。

8、由此有了些基本的运算符,所有的函数本质上其实现都是使用基本运算符来实现的。

9、而==是基本运算符中的一个,它的作用:用于比较引用和比较基本数据类型时具有不同的功能: 比较基本数据类型,如果两个值相同,则结果为true 而在比较引用时,如果引用指向内存中的同一对象,结果为true而equals()作为方法,我们可以推测知道,它其中的实现所使用的肯定是==运算符。

10、再进一步的思考,equals()本意不正是==运算符进行对象比较时候的作用吗。

11、那么,既然是两者有同样的作用,为什么还要弄出一个equals()方法来呢。

12、因为==运算符不允许我们进行覆盖,也就是说它限制了我们的表达。

13、在上面的第三个例子中,我们复写equals()方法,达到比较对象内容是否相同的目的。

14、而这些通过==运算符是做不到的。

本文分享完毕,希望对大家有所帮助。

标签:

免责声明:本文由用户上传,如有侵权请联系删除!