进出口贸易怎么做(外贸出口流程) kingsoft是什么意思可以删除吗(kingsoft可以删除) 淘宝试用攻略(淘宝试用攻略在哪里看) 婴儿闹夜有什么好办法(婴儿闹夜有什么好办法缓解) 如何重新激活淘宝店铺及发布宝贝(如何重新激活淘宝店铺及发布宝贝的权限) 冲锋衣如何选购全攻略(冲锋衣购买指南) 蓝色生死恋演员表恩熙小时候(蓝色生死恋演员表) QQ如何打开电台随机播放(QQ音乐怎么开电台) 如何怎么下载安装steam平台(steam平台游戏安装教程) 大地保险车险报案电话(大地保险车险怎么样) 武昌鱼清蒸的做法(武昌鱼清蒸的做法几分钟) 常用的招聘网站有哪些(现在招聘都用什么网站) 雨爱吉他谱弹唱原版(雨爱吉他谱简单版) 海带打结的作用(海带打结的作用原理) 电脑怎么制作表格新手 初学者(怎样制作表格) 暴走英雄坛丐帮入门任务攻略流程(暴走英雄坛丐帮入门任务攻略流程视频) 最简单的iPhone铃声设置方法(iphone铃声怎样设置) 如何做好一个保险律师(如何做好一个保险律师助理) 手阅怎么进行提现账号设置(掌阅能提现吗) 联想A366T获取Root权限详细图文教程 一个人笔仙游戏怎么玩(笔仙游戏怎么玩图片) 手动蝶阀怎么看开关(手动蝶阀怎么看开关工具) 如何下载【武林外传】(武林外传在哪里可以免费下载) 烫金字怎么做(烫金字) 如何让茶楼加盟店生意更好?(如何让茶楼加盟店生意更好些) 如何判断qq是否隐身(怎么看QQ是否隐身) 80平米两室一厅装修(8度) 瓷砖的色彩应该如何搭配?(瓷砖的色彩应该如何搭配好看) 微观经济学的定义是什么(微观经济学的定义) 书包背带怎么系(书包背带怎么系不会掉) 研究发现与巴顿病有关的蛋白质对于产生新的溶酶体至关重要 研究人员开发了一种新型抗炎药 NLRP1 和 NLRP3 炎症小体抑制剂 声明概述了心脏肿瘤护理和研究方面的不平等 全心全意为人民服务(全心全意) 360手机助手怎么下载(360手机助手怎么下载软件到电脑) 怀孕期间使用 THC 与胎儿发育的变化有关 研究发现空气质量差会以多种方式影响心理健康 研究揭示了后来患上幼年特发性关节炎的儿童肠道细菌的差异 研究证明微生物群移植疗法对干细胞移植和白血病患者的安全性 热量:人体能承受多少热量 了解甲型 乙型 丙型 丁型和戊型肝炎之间的区别 蜱虫季节即将开始 它们出现在新的地方 怎么做松鼠桂鱼 汉语拼音的音节是什么(汉语拼音中什么叫音节) qq如何查看我的勋章墙(怎么看qq我的勋章墙) 牡丹鹦鹉的主要食物有哪些?(牡丹鹦鹉的主要食物有哪些呢) 求发财路子(求发财之路) 怎么在sci上发表文章(怎么能发表sci) 支付宝怎么转账给对方(支付宝怎么转账给对方支付宝) 程婴救孤白燕升 选段(程婴)
您的位置:首页 >综合知识 >

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、而这些通过==运算符是做不到的。

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

标签:

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